ember.js - 如何在 Ember.js 中访问 find() 结果的长度

标签 ember.js ember-data

这个问题和整个问题的答案已经过时。 Ember 数据发生了很大变化。请阅读:http://guides.emberjs.com/v1.11.0/models/

我有这个小小的 Ember 应用程序:

window.App = Ember.Application.create();

App.Store = DS.Store.extend({
  revision: 11,
  adapter: DS.FixtureAdapter({
    simulateRemoteResponse: false
  })
});

App.Model = DS.Model.extend({
  title: DS.attr('string')
});
App.Model.FIXTURES = [];

App.ready = function() {
  console.dir(App.Model.find().get('length'));
  App.Model.createRecord({id: 1, title: "TEST"});
  console.dir(App.Model.find().get('length'));
  console.dir(App.Model.find(1).get('title'));
};

我在 console.dir(App.Model.find(1).get('title') 中得到了正确的标题然而这两个get('length')调用返回 0。我错过了什么?

这是一个(非)工作 jsbin:http://jsbin.com/uxalap/6/edit

最佳答案

原因可能是您正在调用 get("length")甚至在数据加载之前,

基本上当你做 App.Model.find()它返回一个 RecordArray 的实例但它不会有数据,在后台它会查询数据库并获取数据,现在一旦加载数据,您就会找到实际长度

你可以尝试在 isLoaded 上添加一个观察者属性如下

record = App.store.findQuery(App.Model);
alertCount = function(){
  if(record.isLoaded){
    alert(record.get("length"));
  }
};
Ember.addObserver("isLoaded", record, alertCount);

关于ember.js - 如何在 Ember.js 中访问 find() 结果的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15135556/

相关文章:

node.js - 使用 Bower Ember CLI 导入依赖项 - 找不到模块

ember.js - Ember Docs - 只读嵌套数据

javascript - 如何处理包装 View 或 View Controller 中 Ember 组件的操作 "sent"?

javascript - 如何添加 "each in"以在 Handlebars 中工作

ember.js - 使用 ember.js 无限滚动(延迟加载)

json - Ember Cli 和 ASP.NET webapi - 连接数据

ember.js - 手动规范化 JSON

ember.js - Ember -- TypeError : arrangedContent. addArrayObserver 不是函数

ember.js - Ember 数据。保存模型与 "belongsTo"关系

javascript - session 后访问 session 用户名如何在其他 Controller 中进行身份验证