Ember。选择不绑定到对象的选定值

时间:2014-07-18 21:48:48

标签: ember.js

好的伙计们,这真的开始让我感动。我假设我做了一些愚蠢或缺少某些事情,但我似乎无法获得一个选择列表来将所选值绑定到该对象。我试图做的就是创建一些级联下拉列表,就像你在汽车交易者这样的网站上看到的那样。

App.CarController = Ember.ObjectController.extend({
    selectedCarMake: null,

    availableCarMakes: Em.computed(function () {
        return this.store.find("carMake"); // => GET /carMake
    }).cacheable(),

    availableCarModels: Em.computed(function () {
        var make = this.get('selectedCarMake');
        // the line below returns the id and not an object
        console.log(make);
        if (make === undefined || make === null)
            return [];
        return make.get('carModels');
    }).property('selectedCarMake'),
});

这些是我的模特

App.CarMake= DS.Model.extend({
    name: DS.attr('string'),
    carModels: DS.hasMany('carModel', { async: true })
});

App.CarModel= DS.Model.extend({
    name: DS.attr('string')
});

这是我的html标记

         <td>
                {{view Ember.Select
                            contentBinding="availableCarMakes"
                            optionLabelPath="content.name"
                            optionValuePath="content.id"
                            valueBinding="selectedCarMake"
                            prompt="Please Select..."
                }}
            </td>

所以第一个下拉列表(如上所示)会填充,但是当你选择一个值并调用availableModels来绑定第二个下拉列表时,它就会爆炸,因为selectedCarMake是一个id而不是一个对象。任何指针都会非常感激!

1 个答案:

答案 0 :(得分:3)

正如您所说,如果您将用户的选择绑定到对象,请使用selection=selectedCarMake代替valueBinding='selectedCarMake'。值只是将每个<option>(不是绑定到Ember选项的整个对象)的值绑定到您指定的任何属性。有关详细信息,请参阅Em.Select docs