如何获得模型属性

时间:2013-09-02 11:48:08

标签: ember.js ember-data

我有模特:

App.Item = DS.Model.extend({
  itemId: DS.attr('string'),
  itemName: DS.attr('string'),
  itemType: DS.attr('string'),
});

我成功地从JSON创建了一些项目。我可以通过{{#each items}} {{itemName}} {{/ each}}将它们分页。但我不知道,如何在javascript中获取itemName。

我试过了:

var item = App.Item.find(1);
console.log(item.itemName);

- >未定义

我在emberjs和ember-data docs中找不到任何有用的东西。谁能帮我? 感谢

1 个答案:

答案 0 :(得分:0)

  

我试过了:

var item = App.Item.find(1);
console.log(item.itemName);
--> undefined

这是正常的,因为对.find(1);的调用是异步的并且返回一个承诺而不是您期望的项目。

因此你应该尝试:

App.Item.find(1).then(function(result) {
  console.log(record.get('itemName'));
});

这也取决于你在做什么App.Item.find()如果它来自一条路线,你应该等到调用afterModel钩子才能访问你的物品:

App.FooRoute = Ember.Route.extend({
  model: function() {
    return App.Item.find(1);
  },
  afterModel: function(record) {
    console.log(record.get('itemName'));
  }
});

另请注意,如果您在没有参数的情况下致电find(),那么您将收到一个RecordArray,您需要循环才能访问您的商品。另外值得一提的是,在ember中你应该总是使用.get().set()而不是香草点符号,否则你会劫持绑定机制,导致你的视图中没有更新等。

  

注意,如果您使用的是最新的ember.js版本(1.0.0),那么对.find()的调用应该会有所不同。但是你的问题并不清楚。

希望它有所帮助。