我做了一个JsBin,在那里我展示了我的问题:
Explonation:
在第一个选择我有客户。此选择的值(customer_value)过滤第二个选择(contactPersons)集合。如果您选择了一个客户,那么"新联系人"按钮将被启用。点击它会添加一个新的联系人"戴尔"到双R晚餐。 (在我的应用中,它是一个表单,新的联系人将添加到所选客户)
测试
添加新元素时,自动更新 contact_persons 属性会很不错。这不是默认行为吗?或者我必须以某种方式触发它?
答案 0 :(得分:1)
总的来说,一个好的经验法则是查看计算属性中所需的所有属性,以及它们中的任何属性是否会对计算属性的值产生影响(我假设它们都是do),然后应该在属性方法中定义它们。
在这种情况下,您需要查看集合中的每个属性,因为我们使用@each
关键字。重要的是要注意,@each
不能超过一个级别。 http://emberjs.com/guides/object-model/computed-properties-and-aggregate-data/
contact_persons: function(){
var id = parseInt(this.get('customer_value'),10);
return this.get('contactPersons').filterBy('partner.id',id);
}.property('customer_value', 'contactPersons.@each.partner'),
我们在这里说的是,任何时候在contactPersons中添加/删除任何新记录,或partner
属性更改任何新记录(partner
本身,而不是partner.foo
, partner
引用必须更改)然后属性变脏。