我正在努力使每个创建的新集合记录都有一个products属性,其值是一个空的可变数组。
我在/collection.js中定义了一个模型
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
products: DS.hasMany('product'),
rev: DS.attr('string')
});
和/view-collections.js中的路由。在路由中,createCollection是一个在本地创建集合记录的操作(我使用的PouchDB使用Ember Data功能)。我在调用createRecord的行上遇到了麻烦。在一些控制台记录并自己创建一个集合之后,我意识到保存的集合记录不包含产品属性,只是名称和转换,就像“products:[]”这一行被忽略。
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return this.store.findAll('collection');
},
titleToken: 'Collections',
actions: {
createCollection() {
let route = this,
controller = this.get('controller');
let collection = this.store.createRecord('collection', {
name: controller.get('newName'),
products: []
});
return collection.save().then(function() {
controller.set('newName', '');
//route.transitionTo('products.product.collections', product);
});
}
}
});
而不是
products: []
和
products: Ember.A([])
其中,两者似乎都没有被执行,我也尝试了以下所有
products: DS.MutableArray([])
products: DS.ManyArray
products: DS.MutableArray
products: DS.ManyArray([])
给我错误。最后,在我的view-collections.hbs
上{{#link-to 'products' class="button"}}
Back to products
{{/link-to}}
{{input type="text" class="new-collection" placeholder="New Collection" value=newName insert-newline="createCollection" }}
<button class="btn btn-primary btn-sm new-collection-button" {{action "createCollection"}}
disabled={{disabled}}>Add</button>
{{#each model as |collection|}}
<div>{{collection.name}} {{collection.products}} {{collection.id}}
</div>
{{/each}}
我打印所有集合的所有信息,它实际上找到了{{collection.products}}的对象,并为每个集合打印以下内容。
<DS.PromiseManyArray:ember498>
对于这个最后一部分是什么以及如何写出“产品:[]”的任何想法,在路线中都行,欢迎!感谢
答案 0 :(得分:0)
如果不为product
提供价值,您可以createRecord
进行收集。这会奏效。
如果您想要包含产品记录,然后在创建记录时不提供产品记录,则可以在创建记录后使用pushObject
。
let collection = this.store.createRecord('collection', {
name: controller.get('newName')
});
//createRecord for product
let product = this.store.createRecord('product');
collection.get('products').pushObject(product);