Ember-Model 入门:Ember.Adapter 子类必须实现 findAll
Posted
技术标签:
【中文标题】Ember-Model 入门:Ember.Adapter 子类必须实现 findAll【英文标题】:Getting Started with Ember-Model: Ember.Adapter subclasses must implement findAll 【发布时间】:2013-07-27 23:33:09 【问题描述】:我尝试跟随 Ember 演员视频: http://www.embercasts.com/episodes/getting-started-with-ember-model
我最初尝试使用最新的把手 rc4 和 ember rc6,但收到此错误:Ember.Adapter 子类必须实现 findAll
这没有多大意义,因为我可以看到在夹具适配器源代码中定义的 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();
这一行实际上并没有在 person 模型上放置一个带有 findAll 方法的适配器,因此随后对 App.Person.find()
的调用失败了。
【问题讨论】:
【参考方案1】:您似乎将Ember Model 与Ember Data 混为一谈(它们都填补了相同的模型空白)。 Ember 数据由 ember 核心团队提供,ember 模型由 Erik Bryn 提供,他也定期提交给 Ember。他们都非常好。
Ember Data 需要一个商店,而您使用 DS.attr 和 DS.Model.extend 等...
顺便说一句,如果你想将它链接到你的 jsfiddle,cdnjs 有一个 ember 数据。
这里是固定的: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()
);
【讨论】:
我知道这两个并打算使用 Ember 模型。我已经能够让它与 Ember Data 一起使用,但基于 Ember 博客中的这篇文章:emberjs.com/blog/2013/05/03/ember-data-progress-update.html 我决定尝试“开始使用 Ember 模型”。你能指出你认为我在哪里误导或混淆了两者吗?然后我可以更新 OP 并让其他人更清楚。【参考方案2】:很尴尬,但我拼错了适配器...
我什至引用了有错误的代码行。 :(
App.Person.adapter = Ember.FixtureAdapter.create();
无论如何,如果其他人将来发现这个,这里是更新的小提琴: http://jsfiddle.net/YCG9b/3/
【讨论】:
以上是关于Ember-Model 入门:Ember.Adapter 子类必须实现 findAll的主要内容,如果未能解决你的问题,请参考以下文章