组件是否有任何方式可以听取或观察所产生内容的变化?
我有一个组件作为isotope.js包装器,并且希望能够调用一些必要的清理同位素方法(例如.isotope('layout'))以防包装内容发生变化(例如通过过滤)。
通过观察控制器属性,我已经能够使用View做类似的事情,但是如果可能的话,我希望保持较少的耦合。
答案 0 :(得分:0)
嗯,我不确切地知道你想要做什么,也没有使用isotope.js。但是我可以告诉你。 {{yield}}
助手调用此函数:
_yield: function(context, options, morph, blockArguments) {
var view = options.data.view;
var parentView = this._parentView;
var template = get(this, 'template');
if (template) {
Ember.assert("A Component must have a parent view in order to yield.", parentView);
view.appendChild(Ember.View, {
isVirtual: true,
tagName: '',
template: template,
_blockArguments: blockArguments,
_contextView: parentView,
_morph: morph,
context: get(parentView, 'context'),
controller: get(parentView, 'controller')
//expose parent to children components?
});
}
}
理论上,您可以向子组件公开句柄以设置父组件的属性。这显然是两个组成部分的结合。您还可以让孩子和父母同时采取包装内容"作为属性,以便您可以在两个地方观察和操纵。我用这两种方法取得了巨大的成功。我使用的是由上下文决定的