具有表单数据的hasMany关系的新模型实例

时间:2015-03-30 22:33:17

标签: ember.js ember-data ember-cli

我有两种模式:

// models/licenses.js
export default DS.Model.extend({
    name: DS.attr('string'),
    active: DS.attr('boolean'),
    territoryType: DS.attr('string'),
    territories: DS.hasMany('masterTerritory', { async: true }),
    cities: DS.hasMany('city', { async: true }),
});

// models/license-type.js
export default DS.Model.extend({
    primaryCity: DS.attr('string'),
    region: DS.attr('string'),
    licenseType: DS.belongsTo('licenseType', { async: true }),
});

我正在尝试从表单数据创建“许可证”模型的新实例,包括一个包含licenseType数据的选择框:

{{!-- templates/index.hbs --}}
...
{{view 'select'
    contentBinding='controller.ddLicenseTypes'
    optionLabelPath='content.name'
    optionValuePath='content.id'
    class='form-control'
    value=newLicenseType
    action='createLicense'
    prompt='Select a License Type'
}}
...

// controllers/index.js
...
ddLicenseTypes: function() {
    var store = this.get('store');
    return store.findAll('licenseType');
}.property('store'),
...
actions: {
    createLicense: function() {
        var store = this.get('store');
        var primaryCity = this.get('newPrimaryCity');
        var region = this.get('newRegion');
        var licenseTypeId = this.get('newLicenseType');
        if(!primaryCity.trim()) { return; }
        if(!region.trim()) { return; }
        if(!licenseTypeId) { return; }

        var license = this.store.createRecord('license', {
            primaryCity: primaryCity,
            region: region,
            licenseType: store.find('licenseType', licenseTypeId), // What do I do here?
        });

        this.set('newPrimaryCity', '');
        this.set('newRegion', '');
        this.set('newLicenseType', '');

        license.save();
    },
}

我的问题(如'我该怎么做?')将我从选择输入中检索到的licenseTypeId转换回licenseType模型对象。上面的代码将licenseType留空,所以当我将它提交给我的服务器时,它会插入一个带有NULL licenseType的记录。

我已尝试使用同一主题的其他几种排列,但我没有找到正确的答案。

感谢您的帮助。

0 个答案:

没有答案