0

我正在开发一个 Ember 应用程序。我从 localhost 上的同一服务器提供 API 和 ember 应用程序。

我很确定我的 API 符合 Ember 规范(尽管我不确定,因为这里这里给出了相互冲突的信息。第二个站点链接到这篇Ember 博客文章,应该是 Ember 约定的形式化) . 我的 API 遵循第二个链接的样式,因此请求host/api/users/1,例如,返回:

{
  "users": [{
      "username": "jojo"
      etc..
  }]
}

我知道我的 API 正在工作,因为我可以使用curl. 我的问题是 Ember 数据似乎没有发出请求。Chrome 开发人员工具网络选项卡显示在我运行时没有发送加载数据的请求App.User.find()。但是我确实得到了这个:在此处输入图像描述

这是我定义商店的咖啡脚本代码:

App.Store = DS.Store.extend
  revision: 13
  url: 'http://localhost:9292/'
  adapter: DS.RESTAdapter

DS.RESTAdapter.reopen
  namespace: 'api'

这里是我为“用户”定义模型、控制器和路由的地方:

App.UsersRoute = Ember.Route.extend
  model: ->
    App.User.find()

App.UsersController = Ember.ArrayController.extend()

App.User = DS.Model.extend
  username: DS.attr 'string'
  url: DS.attr 'string'
  projects: DS.hasMany 'App.Project'
  query_instances: DS.hasMany 'App.QueryInstance'

我在这里错过了一些重要的事情吗?一般来说,我是 Ember 和客户端开发的新手——也许这里有明显的解决方案,但我不知道它们。如果有人能提供一些关于调试 Ember 的提示,我将不胜感激。

4

2 回答 2

1

我能够通过升级到最新版本的 Ember 和 Ember 数据来解决这个问题。我认为我使用的是不兼容的版本。我最初使用Yeoman ember generator生成了我的项目。我严重怀疑这个生成器实际上会给你不兼容的版本,所以我不太确定问题是什么。它可能是:

  • 我的凉亭缓存有问题
  • 声明中的revision数字陈述不正确DS.Store,我可能已更改,因为我不清楚是否需要包括在内。最新版本不需要它,但这不是 Yeoman 生成器提供的。所以我可能已经删除了它,然后用错误的版本号添加回来。

无论如何,对于遇到类似问题的其他人,我建议您升级您的 Ember 和 Ember Data 版本并确保它们兼容。

于 2013-06-12T15:55:05.810 回答
1

由于该框架非常简陋,除了浏览器控制台和调试 ember 应用程序的调试关联之外,仍然没有太多工具,但存在一些可以帮助完成这项任务的东西。

1.黄金时间还没有准备好,但检查 ember.js 应用程序非常有用的是chrome 的 ember 扩展。

2.由于这个PR,它存在设置标志LOG_ACTIVE_GENERATION以获取有关 ember 在引擎盖下生成的信息的可能性。可以通过以下方式简单地启用活动生成日志记录:

App = Ember.Application.create({
  LOG_ACTIVE_GENERATION: true
});

3.仅用于调试,但非常有用的是__container__,可以像这样轻松检查 ember-data 知道的关于它的模型的所有内容:

App.__container__.lookup('store:main').recordCache

这将使您可以访问商店的记录缓存,例如所有加载的记录。要更详细地检查,您可以访问如下特定记录:

App.__container__.lookup('store:main').recordCache[7].get('data.attributes')

4.另一件事也可能有用的是定义/覆盖全局错误处理程序以捕获 ember 应用程序内发生的所有错误:

Ember.onerror = function(error) {
  console.log(error);
}

5.也可以使用loghandlebars helper直接在模板中记录记录

{{log post}}

或者简单地设置一个调试器断点来进一步检查

{{debugger}}

希望这些信息可以帮助您成功调试您的应用程序。

于 2013-06-08T10:27:20.173 回答