我正在使用最新的 Ember Data 版本 1.0.0-beta。我正在尝试将对象添加到本地存储中的 hasMany 关系,但遇到了一些问题。
我有两个模型:
App.Item = DS.Model.extend({
description: DS.attr('string'),
});
App.Basket = DS.Model.extend({
selectedItems: DS.hasMany('item'),
name: DS.attr('string'),
})
我有一个名为“Items_descriptions”的数组,其中包含一个描述字符串数组。我正在尝试使用以下方式将物品插入篮子:
var basket_record = App.Basket.store.createRecord('basket', { name: 'Test_record' });
var itemsarray = [];
Items_descriptions.forEach(function(description){
var item = App.Item.store.filter('item', function(record){return record.get('description') == description}).objectAt(0);
itemsarray.push(item);
});
basket_record.get('selectedItems').pushObjects(itemsarray); // ***errors out here****
basket_record.save();
但是我在这一行得到以下错误 basket_record.get('selectedItems').pushObjects(itemsarray);" :
未捕获的类型错误:无法读取未定义的属性“typeKey”
我也尝试使用 App.Model.store.find 方法,但这也不起作用:
var basket_record = App.Basket.store.createRecord('basket', { name: 'Test_record' });
var itemsarray = [];
Items_descriptions.forEach(function(description){
App.Item.store.find('item', {'description': description}).then(function(item){
itemsarray.push(item);
});
});
basket_record.get('selectedItems').pushObjects(itemsarray);
basket_record.save();
App.Mode.store.find 方法有效,但它没有成功地将数据添加到 selectedItems 属性中。当我检查 localstorage 时,篮子中的名称属性已正确填写,但所选项目的数组为空。
据我了解, App.Model.store.find 返回一个承诺,而 App.Model.store.filter().objectAt(0) 返回对象本身。
知道我在这里做错了什么吗?任何帮助是极大的赞赏。非常感谢!