我正在学习ember.js,我还没有用它构建任何东西。
我将数据存储在模型对象中,并使用控制器充当视图和模型之间的粘合剂。控制器将内容设置为模型的实例,并且视图具有对控制器中的内容的绑定(因此通过代理对模型具有绑定)。像这样:
// js
App.MyModel = Ember.Object.extend({foo:''});
App.myController = Ember.Object.create({
content: App.MyModel.create()
});
// html
{{view Ember.TextInput valueBinding="App.myController"}}
到目前为止一切顺利。但我不知道如何将这个范例应用于嵌套集合:
//js
App.ChildController = Ember.ArrayController.extend();
App.NestedModel = Ember.Object.extend({
init: function() {
this._super();
this.set('children', []);
// Here: I can't give a global name for the content binding, and I don't know how to give a relative one
this.set('childController', App.ChildController.create({contentBinding: 'children');
}
});
App.myController = Ember.ArrayController.create({
content:[],
newChild: function() {
this.pushObject(App.NestedModel.create());
}
});
// html
{{#collection contentBinding="App.myController"}}
{{#collection contentBinding="content.childController"}} <!-- nope -->
{{content.childField}}
{{/collection}}
{{/collection}}
这是你可以摆弄的东西:http://jsfiddle.net/DwheG/
我要问的是:
this
)对我没用。 Ember的路径分辨率是否记录在任何地方?答案 0 :(得分:0)
我阅读了源代码并确认只能使用路径指定绑定。
Ember使用getPath(root, path)
来解析路径。 root
是开始查找的对象,path是一个字符串。如果路径是全局的,则可以省略根元素(在这种情况下,根将设置为window
)。因此,例如,getPath(myController, 'foo.bar')
在评估时会返回myController.foo.bar
。
所以:鉴于我需要以某种方式引用我的数组的包含对象以创建绑定,并且没有内置工具来执行此操作,我只是在我的模型中添加了对包含对象的引用。见这里:http://jsfiddle.net/CP448/1/