3

我正在学习 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/

我要问的是:

  1. 我什至正确地建模东西吗?
  2. 如何绑定子控制器的内容?我必须使用字符串吗?传入对象 ( this) 对我不起作用。Ember 的路径解析算法是否记录在任何地方?
  3. 如何将嵌套集合助手绑定到嵌套控制器?
4

1 回答 1

0

我阅读了源代码并确认只能使用路径指定绑定。

Ember 用于getPath(root, path)解析路径。root是开始查找的对象,路径是一个字符串。如果路径是全局的,则可以省略根元素(在这种情况下,根元素将设置为window)。因此,例如,getPath(myController, 'foo.bar')myController.foo.bar在评估时返回。

所以:鉴于我需要以某种方式引用我的数组的包含对象以创建绑定,并且没有内置工具来执行此操作,我只是在我的模型中添加了对包含对象的引用。见这里:http: //jsfiddle.net/CP448/1/

于 2012-07-14T05:31:53.853 回答