我遇到了使用ember数据的麻烦,我正在寻求帮助。我使用findRecord返回单个记录(' location'),然后从该记录中获取单个属性(' product')。还有其他属性可以很好地返回(电话,姓名等),然而"产品"直到我至少两次触发模型调用才会返回。我已经检查了我的网络选项卡,它从api进入正常状态,但它似乎没有加载到ember数据中(直到它触发两次)。还有其他人遇到过这个吗?我完全难过了。谢谢!
答案 0 :(得分:0)
在我看来,你有一个定义如下的模型:
/* location model */
export default Model.extend({
phone: attr(),
name: attr(),
/*...*/
product: belongsTo('product')
});
然后,您尝试执行的代码很可能是:
let name = location.get('name'); // This returns immediately.
let product = location.get('product'); // This does not work as expected
如果是这种情况,那么您的问题是您正在尝试在异步关系中同步从该位置获取该产品。这意味着您有两个选择:
选项#1 :使关系保持同步(如Paul Oliver所述)
/* location model */
export default Model.extend({
phone: attr(),
name: attr(),
/*...*/
product: belongsTo('product', {async: false})
});
选项#2 :等待承诺完成
location.get('product').then(function(product) {
// Do something with product here
});