javascript – find()和getById()之间的Ember数据差异
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – find()和getById()之间的Ember数据差异,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1748字,纯文字阅读大概需要3分钟。
内容图文
我知道有一个名为:Ember data: what is difference between find and 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);
},
但这项工作:
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);
},
医生说
Get a record by a given type and ID without triggering a fetch.
This method will synchronously return the record if it’s available. Otherwise, it will return null.
我真的不明白为什么“劫掠获取”不起作用.我认为find()首先看它是否在商店缓存中,只有在找不到时才获取.有人可以开导我吗?
解决方法:
this.store.find(‘catalog’,1);不返回记录,它返回DS.PromiseObject.因为,如果您的记录不在记录缓存中,则需要向服务器发出请求.如果已加载记录,则仍具有promise对象,以保持相同的方法行为,但不会向服务器发送请求.
this.store.getById(‘catalog’,1);如果存在,则从记录缓存中返回对象.可能这项工作是因为您已经使用this.store.find(‘catalog’)加载了目录;或this.store.find(‘catalog’,1);
您可以使用then方法从DS.PromiseObject获取目录记录:
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);
})
},
内容总结
以上是互联网集市为您收集整理的javascript – find()和getById()之间的Ember数据差异全部内容,希望文章能够帮你解决javascript – find()和getById()之间的Ember数据差异所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。