Emberjs选择绑定

时间:2014-05-29 11:16:42

标签: javascript ember.js

这是JsBin:http://jsbin.com/EveQOke/118

信息 - >联系!!

我有一些客户:

var customers = {
  "customers":[
    {"id":3,"name":"Joe","bio":"some tex","contact":{"id":2,"name":"NY"}},
    {"id":2,"name":"Rox","bio":"mo' tex","contact":{"id":1,"name":"LA"}}
  ]
};

和一组位置:

var locations = {
  "location":[
    {"id":1,"name":"LA"},
    {"id":2,"name":"NY"},
    {"id":3,"name":"TKY"},
    {"id":4,"name":"JIB"},
    {"id":5,"name":"VIE"}

  ]
};

我从位置填充我的选择,并尝试根据我的客户的联系人设置它的值和选项,但它不起作用。还有另一个选择我可以设置它,但前提是valuePath和labelPath设置为“name”和select的值。

{{view Ember.Select
   content=model.location
   optionValuePath="content.id"
   optionLabelPath="content.name"
   selection="modal.customer.contact.id"
   value="model.customer.contact.id"
   prompt="Please select a location"
   }}

我看过http://emberjs.com/api/classes/Ember.Select.html,但也许我错过了什么。

我也不明白选择和价值属性之间的区别。 在文档中,如果selection=selectedPerson位于selectedPerson=null

,为什么选择“Tom”

我的红利问题:)是否可以将select的值绑定到对象?例如,客户的联系方式。

{"id":3,"name":"Joe","bio":"some tex","contact":{"id":2,"name":"NY"}}

我将select的值更改为:5

{"id":3,"name":"Joe","bio":"some tex","contact":{"id":5,"name":"VIE"}}

还是我必须手工完成;在位置搜索id为5的对象,并用它替换客户的内容。

!!编辑!!

我已经管理了

  • 使用selectionBinding:如果我更改了select,则客户的联系人将被切换到正确的位置对象。
  • 我可以设置手动选择。见preselect财产。但我不明白为什么必须是字符串,当id是数字时,我仍然无法设置为所选客户的联系人ID。

无论如何,这里是更新的JsBin:http://jsbin.com/EveQOke/126

1 个答案:

答案 0 :(得分:0)

我在这里修复了你的JSbin: http://jsbin.com/EveQOke/134

您最大的问题是您错误地引用了位置对象。 您应该通过id引用位置fixture中定义的位置,如下所示:

App.Customer = DS.Model.extend({
    name: DS.attr(),
    bio:DS.attr(),
    contact:DS.belongsTo('location')
});

var customers = {
  "customers":[
    {"id":3,"name":"Joe","bio":"some tex","contact":2},
    {"id":2,"name":"Rox","bio":"mo' tex","contact":1}
  ]
};

这样Ember可以将选择内容中的对象与客户联系人字段中的相同对象相关联。