Ember - 计算属性(这是一个数组)在向数组添加项目时未采用更新值

时间:2016-07-12 17:52:54

标签: javascript ember.js

我正在使用ember应用程序(1.11)并且遇到计算属性的问题,当代码更新时,它没有更新值。代码如下(已修剪,仅显示相关代码段)。

在迭代通过作为计算属性的“数据”时显示UI上的事物列表。然后我从下拉列表中做出选择,我发送一个动作,触发该计算属性并将内容添加到该列表中。当我这样做一次时,我在UI上获得了所有更新的列表或迭代,但是当我再次进行选择以增加列表/迭代时,计算属性将获取列表的初始值,而不是更新的列表,我只是添加了一个项目,因此没有显示正确的细节。

我没有得到什么问题。我也无法创造一个旋转,因为它有很多代码,并且在错误中陷入了错误。

父组件 - ehbs

{{pax-detail list=list}}

父组件 - js

list: function(){
  return this.get('arr')   //This arr comes from route/controller via query string in url
}.property('arr')

Pax Detail Component- ehbs

{{pax-select action="changed"}}
{{ages ageData=data}}

Pax Detail Component - js

countChanged: '',
actions: {
 changed: function(e){
  this.set('countChanged',e.target.value)
 }
},
data : function(){
  var arr = this.get('list')
  // doing lot to manipulation - constructing arr/object


if(this.get('countChanged')){
  arr.pushObject({}) // basically modifying the initial arr
  return arr
} else {
  return arr
}

}.property('list','countChanged')

Pax选择组件 - ehbs

<select>
 <option>0</option>
 <option>1</option>
 <option>2</option>
</select>

Pax选择组件 - js

change: function (e) {
   this.sendAction('action',e)
 }

2 个答案:

答案 0 :(得分:1)

如果您的示例(更改内容,但数组相同),您的arr不会更改

尝试下一个表格 .property('arr.[]').property('arr.length')

或手动调用.notifyPropertyChange('list')修改数据。 事实上,你的例子就是 list: Ember.computed.alias('arr')

答案 1 :(得分:0)

我尝试的是,无论我在计算属性“data”中的“if”条件内做什么,我都将其移动到动作本身。然后我发现它开始工作了。更不用说了,我不得不使用arr。[],因为据我所知,如果数组的项目正在改变,我需要收听所有项目。 我仍然不确定,为什么会这样,但我想会发布这个。