Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.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
Javascript 如何访问余烬模板中的阵列位置?_Javascript_Ember.js_Each_Handlebars.js - Fatal编程技术网

Javascript 如何访问余烬模板中的阵列位置?

Javascript 如何访问余烬模板中的阵列位置?,javascript,ember.js,each,handlebars.js,Javascript,Ember.js,Each,Handlebars.js,我在Ember做一件简单的事情时遇到了一些挫折。 我知道所有的混乱都来自于将逻辑从模板中分离出来,但我认为我试图实现的目标并没有那么昂贵。 我有一个模型,它返回一个项目列表,这些项目有一个相关属性,根据该属性的值是否重复,模板应该显示一些内容。 我返回的数据应如下所示: [{id :0, text:"Element 0", nested_property: { value:'Value 1' } },{id :1, text:"Element 1", nested_p

我在Ember做一件简单的事情时遇到了一些挫折。
我知道所有的混乱都来自于将逻辑从模板中分离出来,但我认为我试图实现的目标并没有那么昂贵。
我有一个模型,它返回一个项目列表,这些项目有一个相关属性,根据该属性的值是否重复,模板应该显示一些内容。
我返回的数据应如下所示:

[{id :0,
  text:"Element 0",
  nested_property: {
    value:'Value 1'
  }
},{id :1,
  text:"Element 1",
  nested_property: {
    value:'Value 1'
  }
},{id :2,
  text:"Element 2",
  nested_property: {
    value:'Value 2'
  }
},{id :3,
  text:"Element 3",
  nested_property: {
    value:'Value 2'
  }
},{id :4,
  text:"Element 4",
  nested_property: {
    value:'Value 1'
  }
}]
我想要制作的是这样的东西:

[{id :0,
  text:"Element 0",
  nested_property: {
    value:'Value 1'
  }
},{id :1,
  text:"Element 1",
  nested_property: {
    value:'Value 1'
  }
},{id :2,
  text:"Element 2",
  nested_property: {
    value:'Value 2'
  }
},{id :3,
  text:"Element 3",
  nested_property: {
    value:'Value 2'
  }
},{id :4,
  text:"Element 4",
  nested_property: {
    value:'Value 1'
  }
}]
  • 值1 元素0
  • 要素1
  • 价值2 要素2
  • 要素3
  • 值1 要素4

我的建议是在javascript中这样做,在javascript中您可以使用全套工具

余烬的方法是做一个计算,它将按摩您的数据进行演示

binData: Ember.computed('origData', function() {
    let origData = this.get('origData');
    // use Ember collection utilities, lodash, whatever here
    // to bin your data and make it an easy object to loop in hbs
}

现在,您可以在模板内部使用
binData
。而且,由于余烬的魔力,它将随时更新binData

如果要迭代数组模型,请执行以下操作:

  {{#each model as |item|}}
    {{index}}
    {{item.text}}
    {{item.nested_property.value}}
  {{/each}}
如果要获取阵列模型的最后一个元素,请执行以下操作:

{{model.lastObject}}
{{get model '2'}}
如果要获取阵列模型的特定元素,请执行以下操作:

{{model.lastObject}}
{{get model '2'}}
一切都很简单:)
另外,您需要使用最新的余烬来完成此任务

非常感谢@Bek的回答,因为它让我走上了正确的道路。我写在这里只是为了谷歌人。
使用第三个选项将成为作业的一部分,并且要在余烬标记中使用它,必须在括号之间完成:

{{ log (get model 1) }}
因为我需要的是访问动态部分和固定字符串的串联以指示对象属性,所以我必须使用:

{{ log (get model (concat variable 'fixed.string')) }}
至少,但不是最后一次。。。因为我需要在实际位置之前访问该位置,所以我应该在其中使用数学运算。没有内置的帮助程序来获取它,所以我在这里找到了它,最终的代码是这样的:

{{#each model as |item index|}}
  {{ log (get model (concat (math key '-' 1) 'nested_property.value')) }}
{{/each}}

你差点救了我一天。。。我需要将嵌套属性的值作为参数传递给块。根据您的最后一个建议,我可以在日志帮助器上获得一个“固定”位置值:{{log(get model 1.nested_property.value)}}最好是“混合”变量和静态部分以访问index-1元素,类似这样:{{log(get model(key-1.nested_property.value)}如果你告诉我如何将它传递给一个参数,我的意思是:{{component parameter=(get model(key-1).nested_property.value)}因为你的问题似乎已经解决了,请你把你的答案标记为已接受,这样这个问题就不会再显示为未回答了?谢谢