我需要手动检查从基本查找返回的ember-data模型(此模型未绑定到模板,而是需要动态应用某些逻辑)
到目前为止,我已经尝试了以下(没有运气)
App.Foo.find().then(function(model) {
console.log("here with the ember-data payload");
console.log(model.get('length'));
}, function(error) {
console.log("broken");
});
成功块确实触发但它似乎总是返回0结果,但是当我在chrome中查看网络选项卡时,它显示了一个有效的json有效负载,它在我正在使用的这个promise钩子之外工作。
是否有可能用ember-data rev 11劫持承诺解析?
答案 0 :(得分:5)
App.Foo.find()
返回模型列表,即DS.AdapterPopulatedRecordArray
,不是数组,因此没有长度属性。但它有一个 content 属性,它是一组模型。
因此,在您的示例中,您应该使用console.log(model.content.length);
使其工作:
App.Foo.find().then(function(result) {
console.log("here with the ember-data payload");
console.log(result.content.length);
console.log(result.objectAt(0));
}, function(error) {
console.log("broken");
});
请注意,您无法在[]
上使用DS.AdapterPopulatedRecordArray
运算符,因为它不是数组。见Ember guide on DS。您应该使用objectAt
代替:result.objectAt(0);
。
答案 1 :(得分:2)
App.Model.find().then(function(notes) {console.log(notes.content.length)})
为我返回5,这是我的应用程序的正确返回值。
我认为您的语法是正确的,但是您的服务器返回的数据可能存在问题?也许它无论出于何种原因都没有序列化为实际记录。可能值得仔细检查。