Emberjs过滤了选择集合更新

时间:2014-06-19 23:03:12

标签: javascript ember.js

我做了一个JsBin,在那里我展示了我的问题:

http://jsbin.com/pexolude/69/edit

Explonation:

在第一个选择我有客户。此选择的值(customer_value)过滤第二个选择(contactPersons)集合。如果您选择了一个客户,那么"新联系人"按钮将被启用。点击它会添加一个新的联系人"戴尔"到双R晚餐。 (在我的应用中,它是一个表单,新的联系人将添加到所选客户)

测试

  • 选择" Double R Diner"
  • 添加新联系人(已添加Dale,但他不在Double R Diner的联系人列表中)
  • 转到" Great Northen Hotel"
  • 回到" Double R Diner" - > Dale在名单上

添加新元素时,自动更新 contact_persons 属性会很不错。这不是默认行为吗?或者我必须以某种方式触发它?

1 个答案:

答案 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.foopartner引用必须更改)然后属性变脏。

示例:http://jsbin.com/pexolude/72/edit