1

我的 Ember 应用程序只有一个模型,Org,

App.Org = DS.Model.extend({
  name: DS.attr('string')
});

在 Route 模型内部调用

App.Router.map(function(){
  this.resource('organization', {path: '/'});
});

App.OrganizationRoute = Ember.Route.extend({
  model: function() {
    return App.Org.find();
  }
});

我正在使用本地存储适配器。

所以我希望find()调用 LSAdapter 。但是,我输入的情况似乎并非如此

console.log("inside find of LSAdapter");

在我修改后的 LSAdapter 的查找功能版本中,但该行未打印在控制台中。

这是jsbin 的代码,其中 js 在顶部包含修改后的 LSAdapter,在底部包含我的 Ember 应用程序。
这是正在运行的jsbin,请打开控制台。

所以请帮我弄清楚在哪里/如何find被调用。谢谢。

4

1 回答 1

2

有趣的是该find方法是通过 委托的DS.Store,因此如果您不传递一个id或查询对象,它会重定向到findAll您的适配器上。这就是为什么你console.log没有打印任何东西。

您可以在此处查看委托:emberjs/data@store.js#428

奖励:如果您有一条路线,并且它没有子路线,则它不应该是 a resource,除非您使用的是隐含的index子路线。

App.Router.map(function(){
  this.route('organization', {path: '/'});
});
于 2013-08-06T15:50:20.683 回答