我有一个控制器,用于填充项目列表
/** controller/index.js **/
var IndexController = Ember.Controller.extend({
itemlist: function () {
this.set('itemlist', ["a", "b", "c"]);
};
});
在我的模板中,我用
调用它/** templates/index.hbs **/
{{#each item in itemlist}}
{{/each}}
{{view "list"}}
我希望我的子视图使用来自控制器的itemlist属性。
/** views/list.js **/
var ListView = Ember.View.extend({
perform: function () {
}.observes('controller.itemlist')
});
它似乎不起作用。我正在使用Ember App-Kit。我已经尝试将其称为“index.itemlist”,但无济于事。有相当多的例子可以在索引视图中使用相同的方法,但不能用于注入视图(我不确定我的术语是否正确)。
答案 0 :(得分:1)
你必须在使用绑定时传递它:
{{view "list" itemlistBinding="itemlist"}}
然后您可以在ListView
中访问它:
ListView = Ember.View.extend({
perform: function () {
console.log( this.get('itemlist');
}.observes('itemlist')
});
或者你可以传入控制器:
{{view "list" itemlistBinding="controller"}}
ListView = Ember.View.extend({
perform: function () {
console.log( this.get('itemlist');
}.observes('controller.itemlist')
});
解释(来自下面的注释):通过将“Binding”添加到变量名称,可以将其值绑定到引号中的变量。这样,如果引号中的变量(控制器的项目列表)发生变化,ListView中的项目列表也会发生变化