我有两种模式:
// 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的记录。
我已尝试使用同一主题的其他几种排列,但我没有找到正确的答案。
感谢您的帮助。