我遇到让hbs知道房产已经发生变化的问题。 我试过“propertyDidchange”等。似乎没什么用。
我有一个表单计数器
personFormCount: [{id: 1}, {id: 2}]
并形成hbs
{{#each personFormCount}}
<br>Form ID: {{id}}
<button type="submit" {{action 'getID' id}}>ID</button> // sends ID
{{view 'person'}}
{{/each}}
JS
getID: function(id){
var index = id - 1;
this.get('personFormCount').splice(index, 1);
this.notifyPropertyChange('personFormCount');
},
模板上没有发生任何变化。触发操作时,数组会自动更改。功能应该注意删除。
答案 0 :(得分:1)
splice
确实改变了数组,但是Ember没有注意看你是否在拼接数组。你真的想要使用内置的删除功能。
http://emberjs.com/api/classes/Ember.ArrayProxy.html#method_removeObjects
http://emberjs.com/api/classes/Ember.ArrayProxy.html#method_removeObject
http://emberjs.com/api/classes/Ember.ArrayProxy.html#method_removeAt
在你的情况下,这将是一个很好的实现
{{#each personFormCount}}
<br>Form ID: {{id}}
<button type="submit" {{action 'removeItem' this}}>ID</button> // removes this item
{{view 'person'}}
{{/each}}
removeItem: function(item){
this.get('personFormCount').removeObject(item);
},