使用Ember.js 1.13更改数组中数组内对象的值

时间:2016-08-15 09:01:02

标签: javascript arrays ember.js ember-data ember-cli

在我的应用程序中,我有一个数组中数组内对象的结构。对象称为AND规则,带有对象的数组称为OR规则。结构如下所示:

matching: [
  [ // OR rule
    { // AND rule
      name: "rule #1.1",
      value: "test"
    },
    { // AND rule
      name: "rule #1.2",
      value: "test B"
    }
  ],
  [ // OR rule
    { // AND rule
      name: "rule #2.1",
      value: "test C"
    }
  ]
]

当我尝试更改其中一个值时,Ember会更改所有值。例如,如果我将规则#1.2的值更改为"测试值",则规则#1.1和规则#2.1的值也会更改为"测试值"。我使用以下代码来设置值:

setValue (andIndex, orIndex, value) {
  var orRule = this.get('matching').objectAt(orIndex);
  var andRule = orRule.objectAt(andIndex);
  Ember.set(andRule, 'value', value.target.value);
}

我更改值的模板如下所示:

{{#each matching as |orRule orIndex|}}
  {{#each orRule as |andRule andIndex|}}
    <input type="text" onkeyup={{action 'setValue' andIndex orIndex value=value}}>
  {{/each}}
{{/each}}

我的问题是:我想只更改我更改的一个值。我该怎么做呢? 注意:我使用的是Ember.JS 1.13。

1 个答案:

答案 0 :(得分:0)

你不需要采取行动。只需在input助手

中设置值即可
{{#each matching as |orRule orIndex|}}
  {{#each orRule as |andRule andIndex|}}
    {{input value=andRule.value}}
  {{/each}}
{{/each}}

更新

请检查this