Javascript 如何在Ember中以编程方式执行ArrayController[index]?

Javascript 如何在Ember中以编程方式执行ArrayController[index]?,javascript,ember.js,Javascript,Ember.js,我知道如何通过特定属性(this.findBy(prop,value))查找项目。我知道如何从底层数组模型中获取裸项(this.get(“model”)[index]) 但是,如果我引用了ArrayController,那么如何在特定索引处获得完全ItemController包装的模型呢 为了让它更清楚,这里有一个扩展的颜色数组示例,它演示了我需要什么 App=Ember.Application.create(); App.Router.map(函数(){ //把你的路线放在这里 }); 函数

我知道如何通过特定属性(
this.findBy(prop,value)
)查找项目。我知道如何从底层数组模型中获取裸项(
this.get(“model”)[index]

但是,如果我引用了ArrayController,那么如何在特定索引处获得完全ItemController包装的模型呢

为了让它更清楚,这里有一个扩展的颜色数组示例,它演示了我需要什么

App=Ember.Application.create();
App.Router.map(函数(){
//把你的路线放在这里
});
函数颜色(名称、值){
返回Ember.Object.create({name:name,value:value | | name});
}
App.IndexRoute=Ember.Route.extend({
模型:函数(){
返回[
颜色(“红色”),
颜色(“绿色”),
颜色(“黄色”),
颜色(“紫色”)
];
}
});
App.IndexController=Ember.ArrayController.extend({
itemController:“颜色”,
指数:2,
行动:{
setNewValue:函数(){
var指数=此.get(“atIndex”);
警报(“如何从这里找到collor itemController#“+索引+”);
}
}
});
App.ColorController=Ember.ObjectController.extend({
_isPrimary:null,
isPrimary:函数(x,newValue){
如果(新值){
此.set(“\u isPrimary”,newValue);
}
var value=this.get(“_isPrimary”);
返回值| |[“红”、“绿”、“蓝”].indexOf(this.get(“name”))>=0;
}.物业(“名称”),
样式:函数(){
返回“color:”+this.get(“value”)+“;”;
}.财产(“价值”)
});

欢迎来到Ember.js
{{outlet}}
    {{{#此}中的每个项目} {{item.name} {{{#if item.isPrimary} (小学) {{/if} {{/每个}}

设为主 在索引:{{input value=atIndex}}
要按索引获取项目控制器,您可以使用
controllerAt

setNewValue: function () {
  var index = this.get("atIndex");
  this.controllerAt(index).set("isPrimary", true);
}

更新了jsbin

以按索引获取项目控制器,您可以使用
controllerAt

setNewValue: function () {
  var index = this.get("atIndex");
  this.controllerAt(index).set("isPrimary", true);
}

更新的jsbin

是!就是那个。我根本不知道这一系列控制器的功能甚至存在。谢谢
controllerAt
是一种未记录的方法吗?API搜索没有找到任何东西。我相信它是未记录的。是的!就是那个。我根本不知道这一系列控制器的功能甚至存在。谢谢
controllerAt
是一种未记录的方法吗?API搜索没有找到任何东西。我相信它是未记录的