0

我正在使用 .findQuery().get('length') 来获取模型中可用于特定过滤的记录总数。

但每次它显示结果为0。

在这里列出了我的代码。

    total:function(){ 
        return App.Person.query({ contacttype: 1 }).get('length'); 
    }.property('@each.isLoaded')

我使用 .find 尝试过同样的事情,但仍然显示相同的结果:请检查此链接

如何根据过滤条件计算记录长度?请检查此链接 这里我正在尝试计算联系类型的长度。谁能告诉我怎么计算?

现在,我已经更新了我最后的小提琴。如果我的模型记录根据过滤发生变化,如何计算记录总数。

请参考this(点击type1和type2过滤数据)。在这里,我无法根据过滤条件计算总记录。

4

1 回答 1

1

由于您已经在IndexRoute模型挂钩中获取记录,这将content在返回记录时设置控制器的属性,因此您应该在控制器中访问控制器的content属性并观察它的更改:

App.IndexController = Ember.ArrayController.extend({
  total: function() { 
    return this.get('content.length'); 
  }.property('content.length')
});

在这里查看您的工作 jsfiddle。

编辑

如果你想contacttype在你的控制器中过滤,你不应该已经在路由模型钩子中过滤,而是返回你拥有的所有记录:

...
model: function() {
  return App.Person.find();
}
...

然后在你的控制器中过滤:

App.IndexController = Ember.ArrayController.extend({
  total: function() { 
    return this.get('content.length'); 
  }.property('content.length'),

  totalContactType1: function() {
    return this.get('content').filterProperty('contacttype', 1).get('length');
  }.property('content.@each.contacttype'),

  totalContactType2: function() {
    return this.get('content').filterProperty('contacttype', 2).get('length');
  }.property('content.@each.contacttype')
});

这里是另一个 jsfiddle

希望能帮助到你。

于 2013-08-11T09:16:33.720 回答