gpt4 book ai didi

ember.js - Ember-data createRecord 具有 hasMany 关系而不保存

转载 作者:行者123 更新时间:2023-12-02 16:48:52 25 4
gpt4 key购买 nike

我想创建一个新的站点记录。该模型如下所示:

var SiteModel = DS.Model.extend({
name: attr(),
...

languages: DS.hasMany('language'),
});

language属性描述了站点内容可以用哪些语言编写。要创建表单,我需要在我的 route 创建一个模型。所以我想创建一条新记录,而不将此记录保存到数据库中:

 var WebsitesNewRoute = Ember.Route.extend({
model: function() {
return this.store.createRecord('site', {
languages: Ember.A()
});
}
}

这没有按预期工作,因为我收到以下错误:cannot set read-only property "languages" on object: <app@model:site::ember1012:null>> 。为什么是languages属性只读?据我所知,我没有在我的模型中配置它......

<小时/>

我知道这个问题Ember Data- createRecord in a hasMany relationship ,但就我而言,我还不想保存任何内容(我只想创建模型,这样我就可以在我的模板中使用它)。

最佳答案

Ember-Data 将 languages 定义为只读属性,因为它不希望您替换数组。无论您是否保存,Ember-Data 都希望您使用 addObject 添加关系并使用 removeObject 删除关系。

因此,如果您想添加一种语言,您可以这样做:

model: function() {
var model = this.store.createRecord('site');
var language = getLanguage();
model.get('languages').addObject(language);
return model;
}

通过将languages提供给createRecord,您所做的实际上是调用model.set('languages', Ember.A()) code>,而 Ember-Data 不喜欢这样。

我知道这很愚蠢,但这就是 Ember-Data 的工作原理。

关于ember.js - Ember-data createRecord 具有 hasMany 关系而不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24184706/

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