3

我需要手动检查从基本查找返回的 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 有效负载,该有效负载在我正在使用的这个承诺挂钩之外工作。

是否可以使用 ember-data rev 11 劫持承诺解决方案?

4

2 回答 2

5

模型的App.Foo.find()返回列表,即 a DS.AdapterPopulatedRecordArray,它不是数组,因此没有长度属性。但它有一个内容属性,即模型数组。因此,在您的示例中,您应该使用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,因为它不是数组。请参阅DS 上的 Ember 指南。您应该objectAt改用:result.objectAt(0);.

于 2013-02-06T10:03:28.380 回答
2

App.Model.find().then(function(notes) {console.log(notes.content.length)}) 为我返回 5,这是我的应用程序的正确返回值。

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

于 2013-02-08T10:27:46.937 回答