有人可以帮助我解决以下疑问吗?
我正在使用 EmberJS 3.4 版本,我的路线看起来像
export default Route.extend({
model(){
const items = [{price: 10}, {price: 15}]
return items
},
});
和一个为模型返回未定义的控制器
export default Controller.extend({
init(){
console.log(this.model); //returns undefined
console.log(this); //has the model object as a property
},
})
出于某种原因,this.model 返回 undefined 但是当我记录“this”时,它具有模型对象作为列出的属性。
我的问题是,当我在计算属性中访问模型时,为什么该属性不是 undefined ?
导出默认 Controller.extend({
subtotal: computed('this.model', function(){
return this.model.reduce((acc, item) => {
return acc + item.price
},0) // return 25
}),
})
控制器是单例的,因此您无法访问init
.
当我在计算属性中访问模型时,为什么该属性不是未定义的?
在计算属性中访问(以及在更现代的 ember 中,本机 getter)是对属性进行响应式访问的唯一方法model
。这种“反应性”使您的所有数据保持同步——在 ember 3.4 中,计算的回调在依赖关系也得到解决之前不会被调用)。
更多信息
出于某种原因,this.model 返回 undefined 但是当我记录“this”时,它具有模型对象作为列出的属性。
发生这种情况是因为您记录了一个object
,并且控制台中的对象没有复制到控制台,而是渲染了引用,所以如果您不够快,数据将在您查看时全部解析/解决。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句