正在开发 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 详细信息组件 - ehbs
{{pax-select action="changed"}}
{{ages ageData=data}}
Pax 详细信息组件 - 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)
}
最佳答案
如果您的示例(更改其内容,但数组相同),则您的 arr
不会更改
尝试下一个表单
.property('arr.[]')
或 .property('arr.length')
或在修改数据时手动调用.notifyPropertyChange('list')
。
事实上你的例子只是
列表:Ember.compulated.alias('arr')
关于javascript - Ember - 计算属性(这是一个数组)在将项目添加到数组时不获取更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38335861/