Mic*_*uve 4 javascript ember.js ember-data
我知道有一个问题:Ember数据:find和findById有什么区别?.但是,如果我错了,请更正,但我认为它与旧版本的Ember数据有关,因为我在embet-data doc中找不到这个方法.
我试图在我的目录中插入一个新类别.这不起作用:
newRecord: function() {
catalog = this.store.find('catalog', 1);
record = this.store.createRecord( 'category', {category_name_fr_sh: 'Nouvelle categorie'});
catalog.get('catalog_categories_ids').pushObject(record);
this.set('content', record);
},
Run Code Online (Sandbox Code Playgroud)
但这项工作:
newRecord: function() {
catalog = this.store.getById('catalog', 1);
record = this.store.createRecord( 'category', {category_name_fr_sh: 'Nouvelle categorie'});
catalog.get('catalog_categories_ids').pushObject(record);
this.set('content', record);
},
Run Code Online (Sandbox Code Playgroud)
医生说
获取给定类型和ID的记录,而不触发获取.如果记录可用,此方法将同步返回记录.否则,它将返回null.
我真的不明白为什么"劫掠获取"不起作用.我认为find()首先看它是否在商店缓存中,只有在找不到时才获取.有人可以开导我吗?
this.store.find('catalog', 1);不返回记录,它返回一个DS.PromiseObject.因为,如果您的记录不在记录缓存中,则需要向服务器发出请求.如果已加载记录,则仍具有promise对象,以保持相同的方法行为,但不会向服务器发送请求.
this.store.getById('catalog', 1);如果存在,则从记录缓存中返回对象.可能这项工作因为你已经使用this.store.find('catalog');或加载了目录this.store.find('catalog', 1);
您可以DS.PromiseObject使用then方法获取目录记录:
newRecord: function() {
var self = this;
var catalogPromise = this.store.find('catalog', 1);
catalogPromise.then(function(catalog) {
var record = this.store.createRecord( 'category', {category_name_fr_sh: 'Nouvelle categorie'});
catalog.get('catalog_categories_ids').pushObject(record);
self.set('content', record);
})
},
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2981 次 |
| 最近记录: |