1

好的,我已经为此挠头了一段时间。我正在尝试通过 RESTful API 加载一些简单的数据,但我无法让数据真正显示出来。我可以看到正在进行正确的 API 调用(正确设置了 auth 标头)并且正在返回数据,但它只是从未出现过。任何帮助将不胜感激。

这是我的javascript:

window.App = Ember.Application.create();

App.Store = DS.Store.extend({
  revision: 13
});
DS.RESTAdapter.reopen({
  namespace: 'api',
  headers: {
    'X_AUTH_TOKEN': user_api_key
  }
});

App.Router = Ember.Router.extend();
App.Router.map(function () {
  this.resource('config_items');
});

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

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

和模板(在 HAML 中):

%script(type="text/x-handlebars" data-template-name="config_items")
  %ul#config-item-list
    {{#each controller}}
    %li {{name}}: {{value}}
    {{/each}}

以及 API 调用返回的数据:

{"config_items":[
  {
    "id":6,
    "organization_id":1,
    "name":"test",
    "value":"1234",
    "created_at":"2013-08-24T00:54:07Z",
    "updated_at":"2013-08-24T00:54:07Z"
  },{
    "id":9,
    "organization_id":1,
    "name":"qwer",
    "value":"tyui",
    "created_at":"2013-08-24T01:02:35Z",
    "updated_at":"2013-08-24T01:02:35Z"
  },{
    "id":11,
    "organization_id":1,
    "name":"6666666",
    "value":"gggg",
    "created_at":"2013-08-24T01:02:59Z",
    "updated_at":"2013-08-24T01:02:59Z"
  }
]}
4

1 回答 1

0

要显示您的项目,您需要对代码进行一些更改。

让我们开始吧,首先删除这一行:

App.Router = Ember.Router.extend();

这不是必需的,因为 ember 会在您App的命名空间中查找已调用的属性Router

然后,将您的路由器映射更改为此,添加{path: '/'},这将使您的config_items模板在访问时直接呈现,'/'正如我们在config_items资源path属性中定义的那样。

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

最后添加你调用ConfigItemsRoutemodel钩子find()

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

最后但并非最不重要的是这里有一个演示:http: //jsbin.com/odosoy/110/edit

希望能帮助到你。

于 2013-08-25T23:16:46.243 回答