我是ember的新手,我想简单地获取Fixtures模型存储的项目的日志,但我不能。这就是我所做的:
app.js
App = Ember.Application.create();
App.Store = DS.Store.extend({
adapter: DS.FixtureAdapter.extend()
});
App.Documenter = DS.Model.extend({
firstName: DS.attr('string'),
lastName: DS.attr('string')
});
App.Documenter.FIXTURES = [
{ id: 1, firstName: 'Trek', lastName: 'Glowacki' },
{ id: 2, firstName: 'Tom', lastName: 'Dale' }
];
App.IndexRoute = Ember.Route.extend({
controllerName: 'application',
actions: {
addtostore: function () {
},
displaystore: function () {
var obj = this.store.all('documenter');
console.log(obj.objectAt(0).firstName); //here i get undefined
}
}
});
HTML:
<script type="text/x-handlebars">
<h2> Ember POC</h2>
<p>POC</p>
{{outlet}}
<button {{action 'displaystore'}}>TestButton</button>
</script>
我已经在stackoverflow上看了几个答案: Ember-Data Fixture Adapter Ember App Kit with ember data
但我仍然不知道,为什么按钮TestButton
不会登录到控制台。我尝试了很多方法,但总是未定义
答案 0 :(得分:4)
无需定义商店,您的适配器应如此定义:
App.ApplicationAdapter = DS.FixtureAdapter;
并且all
仅返回已找到并位于商店中的记录。 FIXTURES哈希不会自动加载到商店中,您仍然需要使用find
才能从FIXTURES哈希中获取记录。
displaystore: function () {
this.store.find('documenter').then(function(records){ // this is async
console.log(records.get('firstObject.firstName'));
});
}
您是否愿意从这样的操作中拨打find
,因为它每次都会回拨给服务器,通常您会在路线(甚至可以在路线中填充您的商店,以便您可以使用all
)。
答案 1 :(得分:0)
因为我在Ember很新鲜,所以我犯了一些常见的错误。我不明白路线,把手等等,我搞砸了。问题是我没有将模型分配给控制器。
App.IndexRoute = Ember.Route.extend({
model: function () {
var store = this.get('store');
return store.findAll('documenter');
}
});