我正在尝试在Ember.js上的车把内的数组中访问对象。我尝试了以下组合:
1个 {{render "input-validation-message" validity.options.[_view.contentIndex]}}
2个 {{render "input-validation-message" validity.options._view.contentIndex}}
3 {{render "input-validation-message" validity.options[_view.contentIndex]}}
数组为validity.options
,索引为_view.contentIndex
,这是我知道如何{{#each}}
在Ember.js的循环内访问索引的唯一方法。
三种方法都没有传递对象。有没有人有办法解决吗?
编辑:
经过一番摸索后,我发现_view.contentIndex
{{unless}}或{{if}}块内部没有访问。我的代码看起来像这样:
{{#each modelArray}}
{{#unless _view.contentIndex}}
[code here that needs to access _view.contentIndex]
{{else}}
[more code here that needs to access _view.contentIndex]
{{/unless}}
{{/each}}
有办法解决这个问题吗?
固定的!
我在下面略微修改了正确答案:
{{#each item in modelArray itemController='foo'}}
{{render "input-validation-message" item.validityOption}}
{{/each}}
App.FooController = Ember.ObjectController.extend({
validityOption: function(){
var model = this.get('model'),
eachController = this.get('target'),
parentController = eachController.get('target'),
idx = eachController.get('content').indexOf(model);
return parentController.get('validity.options').objectAt(idx);
}.property('model')
});
如果数组不是Ember.Array,请使用[]
not objectAt()
。
您将要使用itemController并关联控制器中的关联
{{#each item in modelArray itemController='foo'}}
{{render "input-validation-message" item.validityOption}}
{{/each}}
App.FooController = Ember.ObjectController.extend({
validityOption: function(){
var model = this.get('model'),
parentController = this.parentController,
idx = parentController.indexOf(model);
return parentController.get('validity.options').objectAt(idx);
}.property('model')
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句