Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当索引是动态的时,如何访问Ember.js中Handlebar内的数组对象?_Ember.js_Handlebars.js - Fatal编程技术网

当索引是动态的时,如何访问Ember.js中Handlebar内的数组对象?

当索引是动态的时,如何访问Ember.js中Handlebar内的数组对象?,ember.js,handlebars.js,Ember.js,Handlebars.js,我试图访问Ember.js上Handlebar内数组中的对象。我尝试了以下组合: 1{render“input validation message”validity.options.[\u view.contentIndex]}} 2{render“input validation message”validity.options.\u view.contentIndex}} 3{render“input validation message”validity.options[\u view.

我试图访问Ember.js上Handlebar内数组中的对象。我尝试了以下组合:

1
{render“input validation message”validity.options.[\u view.contentIndex]}}

2
{render“input validation message”validity.options.\u view.contentIndex}}

3
{render“input validation message”validity.options[\u view.contentIndex]}}

数组是
validity.options
,索引是
\u view.contentIndex
,这是我知道如何在Ember.js上的
{{each}}
循环中访问索引的唯一方法

这三种方法都没有传递对象。有人有解决办法吗

编辑:

在玩了一些游戏之后,我发现,{code>\u view.contentIndex没有在{{inspect}或{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')
});

示例:

您是否在一个数组上进行教学,并试图从另一个数组中获取选项?@kingpin2k是的,教学数组是DS.Model,而validity.options数组是一个简单数组。我发现了一个更具体的错误原因,请检查编辑。太好了!不知道itemController属性。我不得不稍微修改一下,请检查编辑。