如何在ember-data模型上进行泛型查找后劫持promise解析?

时间:2013-02-05 21:16:38

标签: javascript ember.js ember-data promise

我需要手动检查从基本查找返回的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劫持承诺解析?

2 个答案:

答案 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,这是我的应用程序的正确返回值。

我认为您的语法是正确的,但是您的服务器返回的数据可能存在问题?也许它无论出于何种原因都没有序列化为实际记录。可能值得仔细检查。