这个问题和整个问题的答案已经过时。 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/