gpt4 book ai didi

javascript - Ember 数据存储从 FIXTURES 返回未定义的记录

转载 作者:行者123 更新时间:2023-11-30 10:13:05 24 4
gpt4 key购买 nike

我是 ember 的新手,我想简单地获取 Fixtures 模型存储的项目日志,但我做不到。这是我所做的:

应用程序.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 不登录到控制台。我尝试了很多方法,但总是未定义

最佳答案

不需要定义商店,你的适配器应该这样定义:

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 是值得怀疑的,因为它每次都会回调到服务器,通常你会得到路由中的记录(甚至是素数您的商店在 route ,以便您可以使用 all)。

关于javascript - Ember 数据存储从 FIXTURES 返回未定义的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25382955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com