我试图跟随Ember演员视频: http://www.embercasts.com/episodes/getting-started-with-ember-model
我最初尝试使用最新的把手rc4和ember rc6但是收到了这个错误:Ember.Adapter子类必须实现findAll
它没有多大意义,因为我可以看到在fixture适配器源代码中定义的findAll方法实现。我尝试调试app.js以检查App.Person.adapter,但是对于mixins的所有获取和包装器,它没有太大帮助。
然后我直接从视频中下载了源代码并在浏览器中打开了index.html,但仍然有相同的错误。这真的很奇怪,因为代码显然适用于视频。
无论如何,我试图在这里制作一个jsFiddle: http://jsfiddle.net/YCG9b/1/ 看看是否有人可以指出我希望在某处发生的微不足道的错误。 jsFiddle不喜欢从github加载ember-model.js所以我将整个内容粘贴到JS部分。
这里发生的事情很少,似乎这可能是库版本之间的不兼容,某些环境问题,或某些地方的愚蠢语法错误。
我的理解是,这一行App.Person.adpater = Ember.FixtureAdapter.create();
实际上并没有在人员模型上放置一个带有findAll方法的适配器,因此App.Person.find()
的后续调用失败了。
答案 0 :(得分:1)
相当尴尬,但我拼错了适配器...
我甚至引用了有错误的代码行。 :(
App.Person.adapter = Ember.FixtureAdapter.create();
无论如何,如果其他人在将来发现这一点,这里是更新的小提琴: http://jsfiddle.net/YCG9b/3/
答案 1 :(得分:0)
看起来你正在混淆Ember Model和Ember Data(它们都填充相同的模型空白)。 Ember数据由ember核心团队提供,ember模型由Erik Bryn提供,他也定期向Ember提交。他们都非常好。
Ember Data需要商店,您使用DS.attr和DS.Model.extend等...
BTW,cdnjs有一个余烬数据,如果你想把它链接到你的jsfiddle。
此处已修复:http://jsfiddle.net/PX5DV/
App.Store = DS.Store.extend({
revision: 13,
adapter: DS.FixtureAdapter.create()
});
App.Person = DS.Model.extend({
id: DS.attr(),
name: DS.attr()
});