考虑以下两种模型:汽车和所有者
我有一个当前车主的记录(鲍勃·琼斯),还有一个拥有者详细信息的记录(鲍勃·琼斯)...地址,电话等。
在我的汽车表格(汽车模型)中,我有以下内容:
export default Model.extend({
"owner_id": DS.belongsTo('owner'),
"year": attr(''),
"model": attr(''),
"make": attr('')
})
存储在数据库端的ID为“ 12345”,与Bob Jones所有者记录相对应。
当我加载汽车记录(2015 Jaguar)时,它还将连接到Bob Jones记录,该记录会告诉我他的电话,地址等。例如,如果我打印出
{{owner_id.id}} - {{owner_id.name}}
我将展示:
12345-Bob Jones
我的问题是,如果我更换车主会怎样?如果我选择下拉列表
{{my-select
name="owner_id"
content=ownerList
selection=owner_id.id
prompt="select an owner"
required=true
}}
从此组件:
import Ember from 'ember';
export default Ember.Component.extend({
content: [],
prompt: null,
optionValuePath: 'value',
optionLabelPath: 'label',
init: function () {
this._super(...arguments);
if (!this.get('content')) {
this.set('content', []);
}
},
actions: {
change: function () {
let selectedIndex = this.$('select')[0].selectedIndex;
let content = this.get('content');
// decrement index by 1 if we have a prompt
let hasPrompt = !!this.get('prompt');
let contentIndex = hasPrompt ? selectedIndex - 1 : selectedIndex;
let _selection = content[contentIndex];
this.sendAction('willChangeAction', _selection);
if (this.get('optionValuePath')) {
this.set('selection', _selection[this.get('optionValuePath')]);
} else {
this.set('selection', _selection);
}
this.sendAction('didChangeAction', _selection);
}
}
});
并更改值...我收到此错误:
记录的ID一旦处于加载状态就无法更改
您如何更新2015年捷豹(Jaguar)的汽车记录以更改车主,并加载新车主的详细信息?
您正在更改所有者的ID,而不是更改owner_id
美洲虎上的道具。我更改了owner_id
道具以owner
帮助弄清belongsTo持有什么。
我采用的一般策略是选择汽车的所有者,然后将其传递回控制器以保存汽车。
型号/car.js
export default Model.extend({
"owner": DS.belongsTo('owner'),
// ...
})
路线/汽车/car.js
import Ember from 'ember';
export default Ember.Route.extend({
model(params) {
return Ember.RSVP.hash({
car: this.store.find('car', params.id),
ownerList: // however you get the owner list
})
}
})
控制器/汽车/ car.js
import Ember from 'ember';
export default Ember.Controller.extend({
actions{
ownerChanged(newOwner) {
// If the select is setup properly, newOwner should be an instance of owner.
const car = this.get('model.car');
car.set('owner', newOwner);
car.save
}
}
})
模板/汽车/car.hbs。
{{my-select
name="owner"
content=model.ownerList
selection=model.car.owner.id
prompt="select an owner"
required=true
didChangeAction='ownerChanged'
}}
路线模型挂钩中的代码大部分是为了清楚起见,如果您采用其他方法,请相应地调整名称
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句