如何从控制器获取夹具中的记录总数

How do I get the total number of records in a fixture from a controller?

本文关键字:记录 夹具 控制器 获取      更新时间:2023-09-26

>我想从控制器获取夹具中的记录总数。 这是我的灯具代码:

夹具

App.Items.FIXTURES = [
 {
    id: 1
 },
 {
    id: 2
 },
 {
    id: 3,
 }
];

在这种情况下,夹具中总共有 3 条记录。如何在控制器中获取该总数?

如果您使用这样的东西:

App.ItemsRoute = Ember.Route.extend({
  model: function() {
      return this.store.find('items');
  } 
});

store.find返回一个 Ember.PromiseProxyMixin 实例,因此您可以观察 isFulfilled 属性以了解何时加载数据:

App.ItemsController = Ember.ArrayController.extend({
    doSomethingWithTotal: function() {        
        var length = this.get('model.length');
        // do something with de length
    }.observes('model.isFulfilled')
});

像这个样子 http://jsfiddle.net/marciojunior/UeCWV/

你可以向ArrayController询问属性content,它将返回一个数组,这使您可以访问length

这是一个更新的小提琴:http://jsfiddle.net/bYSjD/

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

这种工作方式是App.ItemsRoute.model返回一个 Promise 来查找项目,当它完成后,另一种ItemsRoute方法称为:setupController

Ember 将自动为您处理setupController,这会使用返回的模型数据填充控制器。将设置ItemsControllercontent属性,使您的属性doSomethingWithTotal具有实际价值。