win*_*yer 5 javascript ember.js ember-data
我有这个productsCount计算属性应该计数所有,products但它总是返回0.为什么这样,我该如何解决它?
controller.js
productsCount: Ember.computed('model.products', function() {
var products = this.get('model.products');
return products.get('length');
}),
Run Code Online (Sandbox Code Playgroud)
route.js
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return {
products: this.store.find('product')
};
}
});
Run Code Online (Sandbox Code Playgroud)
Mar*_*ior 11
在model.products当你的计算机属性传递,只会触发this.get('model').set('products', [...])被调用.但是因为products是一个类似于对象的数组,length当有人调用时,属性可能会被更改,products.pushObject(...)因为products数组引用没有被更改,只会对你的内容进行重新计算.
要修复此问题,您必须添加.length到计算属性相关键,如下所示:
productsCount: Ember.computed('model.products.length', function() {
return this.get('model.products.length');
})
Run Code Online (Sandbox Code Playgroud)
由于您只是对属性进行别名,因此您可以利用Ember.computed.alias,并将代码简化为:
productsCount: Ember.computed.alias('model.products.length')
Run Code Online (Sandbox Code Playgroud)
Ember.computed.*您还可以在文档中查看其他非常有用的计算宏以获取更多信息
| 归档时间: |
|
| 查看次数: |
4906 次 |
| 最近记录: |