我在Ember 3.1中有一个ES6类,它被传递给一个名为certifciate
的余烬数据对象。我希望能够在该证书上拨打.reload()
,如下所示:
@action
showCertificateInfo(this: DomainCard, certificate) {
this.setProperties({
isShowingCertificateModal: true,
selectedCert: certificate,
})
certificate
.reload()
.then(() => {
this.set('isShowingCertificateModal', true)
})
.catch(e => {
// TODO: handle this
})
}
但是,如果我这样做,那么Ember会给出以下错误/警告:
Assertion Failed: You attempted to access the 'reload' property
(of <DS.PRomiseObject:ember796>)... However in this case4 the object
in quetstion is a special kind of Ember object (a proxy). Therefore,
it is still necessary to use` .get(‘reload’)` in this case.
如果我按照代码建议执行操作并改为调用.get('reload')
,那么我会收到内部Ember错误,在调用this
时未定义this._internalModel
。在做的时候我得到了同样的错误:
const reload = certificate.get('reload').bind(certificate)
reload().then()
...
我需要做些什么才能正确重新加载此ember数据对象?
答案 0 :(得分:1)
实际上,如果基本问题似乎是证书模型与域模型存在异步关系,并且使用{async: false}
,我们就不再需要将proxyPromise对象返回给我们,并且不再需要将content
对象拉出承诺。
答案 1 :(得分:-1)
将内容从代理中拉出来解决了这个问题:
const certContent = certificate.content || certificate
certContent.reload()
我仍然不确定为什么Ember 3.1无法正常使用代理,但这是解决方案。