2014-12-01 1 views
0

В Facebook react.js вы можете составлять компонент внутри компонента, а может быть, смешивать и сопоставлять.Может твиттер flyjs сделать компонент внутри компонента

Мне интересно, может ли твиттер выполнять то же самое. если да, может ли кто-нибудь привести мне пример?

это то, что я до сих пор:

define(function (require) { 

var defineComponent = require('flight/lib/component'), 
    infoInput = require('component/info_input'); 

return defineComponent(inputSection, infoInput); 

function inputSection() { 

    this.after('initialize', function() { 

     infoInput.doSomehting(); 

    }); 

}; 

}); 

и мои info_input.js определен ниже:

define(function (require) { 

var defineComponent = require('flight/lib/component'); 
return defineComponent(infoInput); 
function infoInput() { 

    this.after('initialize', function() { 


    }); 

    this.doSomething = function() { 
     alert('I will do something'); 
    }; 

}; 

}); 

ответ

1

Это то, что mixins для. Компоненты полета - это обогащенные смесины.

С док/component_api.md

Он поставляется с набором базовых функций, например обработки событий и регистрации компонентов. Каждое определение компонентов смешивается в наборе пользовательских свойств, которые описывают его поведение.

Подробнее о Components.

Так что ответ на ваш вопрос: Да. Я предполагаю, что то, что вы делаете, является законным, хотя я никогда не делал этого раньше.

Я предпочел бы перейти к общей логике к Mixin или прикрепить два компонента к одному элементу, и пусть они говорят через событие:

компонента/input_section.js

this.after('initialize', function() { 
    this.trigger('uiSomethingRequired'); 
}); 

компонент/info_input .js

this.after('initialize', function() { 
    this.on('uiSomethingRequired', this.doSomething); 
}); 
+1

Я забыл упомянуть, что если вы сделаете это, вы должны приложить info_input первым в противном случае input_section будет срабатывать событие слишком рано :) –

+0

спасибо за ша кольцо. Я понимаю миксины, возможно, моя концепция недостаточно сильна. Полагаю, для меня есть практическая практика. Спасибо! – Jim

 Смежные вопросы

  • Нет связанных вопросов^_^