我试图循环我认为是Ember承诺的东西,但我似乎得到的只是一个对象,当它应该是一个数组时。
jsbin:http://emberjs.jsbin.com/qakine/1/edit
如果我只是循环模板中的项目,那么我没有问题,但我希望能够与控制器中的数组项进行交互。任何帮助表示赞赏。
答案 0 :(得分:4)
这里有很多事情,让我看看我是否能记住它们:
当您在资源下有路线时,该路线的路线和控制器应采用其父级的名称。
App.Router.map(function() {
this.resource("parent", function(){
this.route("child");
});
});
App.ParentChildRoute...
App.ParentChildController...
把手无法从您的控制器访问正常功能,这应该转换为计算属性。
App.ParentChildController = Ember.ObjectController.extend({
middleNames: function(){
...
}.property('middles.[]')
});
命名区分大小写
{{#each name in middlenames}}
应该是
{{#each name in middleNames}}
答案 1 :(得分:0)
我创建了一个基于你的新例子,以便清楚地表达出来。你可以在这里查看:
http://emberjs.jsbin.com/hokabe/4/edit
对于Ember路由的model
挂钩,如果返回值是一个promise,路由将等待已解决的promise并将解析后的值传递给控制器的model
属性
App.Parent
实例的middles
属性会返回一个承诺(实际上是DS.PromiseArray
实例),它将解析一个middles数组(实际上它是' sa DS.ManyArray
实例)。
所以为了生孩子,你可以这样做:
App.ParentMiddlesRoute = Ember.Route.extend({
model: function() {
return this.modelFor('parent').get('middles');
}
});
请注意,modelFor
参数是路由名称,但不是模型名称。它意味着"从给定路线获取模型"。