gpt4 book ai didi

Ember.js 绑定(bind)并保存 belongsTo 属性

转载 作者:行者123 更新时间:2023-12-02 06:03:07 24 4
gpt4 key购买 nike

我有两个通过 belongsTo 相互关联的模型(互惠关系,即 1:1)利用 async属性(property)。检索到一条记录并将其设置为路由器上的模型后,我可以访问主记录及其关联中的属性——那里一切正常。我使用输入助手将属性绑定(bind)到 inputtextarea元素,以便用户可以对模型进行更改,包括相关记录上的属性。然而,当我运行我的 save()函数,Ember 只生成 PUT请求主记录,而不是关联的记录,即使它是更改的记录。

Entry.js(模型)

export default DS.Model.extend({
// Properties
entry: DS.attr('Number'),
...

// Relational properties
definition: DS.belongsTo('definition', {async: true}),
...
});

Definition.js (模型)
export default DS.Model.extend({
// Properties
blocks: DS.attr(),
...
// Relational properties
entry: DS.belongsTo('entry', {async: true}),
...
});

路由.js
export default Ember.Route.extend({
model: function(params){
return this.store.find('Entry', params.entry_id);
},
actions: {
saveDef: function(){
// console.log('Saving . . .');
var entry = this.controller.get('content');
entry.save().then(function(){
// console.log('Saved Success');
}, function(err){
// console.log(err);
});
}
}
});

提前致谢。

最佳答案

在 Ember 中,当您保存模型时,其他模型不会被保存。
您需要单独保存每个模型。我建议您为每个模型创建一个单独的 View 并单独保存,因为您可能会遇到一致性问题。

无论如何,这就是你如何保存这两个模型。

var model = this.controller.get('content');
model.save();
var definition = model.get('definition');
if( definition && definition.then ) {
definition.then(function(definition) { definition.save(); });
} else if( definition ) {
definition.save();
}

更新:

这里的问题是未加载定义。所以当你调用 model.get('definition') Ember 需要从服务器获取模型。这就是它返回 promise 的原因。

在我看来,您试图保存定义模型只是为了更新关系。你不需要这样做。第一次保存就足够了。更新其他模型应该在服务器上完成。

关于Ember.js 绑定(bind)并保存 belongsTo 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30918590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com