javascript - Ember.js:将 Em.$.getJSON 转换为 promise 并将响应绑定(bind)到 Controller 上下文的正确方法?

标签 javascript ember.js

我正在使用 $.getJSON 获取一些数据,我想将这些数据异步绑定(bind)到 Controller 上下文。我在我的 route 想出了这个 - 它有效,但我对此并不满意:

setupController: function(controller, model) {
  this._super(controller, model);
  Em.RSVP.Promise.cast(Em.$.getJSON((this.get('ENV.apiBaseURL')) + "/users/current/live_matchday_stats")).then((function(_this) {
  return function(s) {
    return _this.controller.set('matchdayStats', Em.Object.create(s));
  };
}

然后,在我的模板中,例如,我可以使用:

Foo: {{matchdayStats.foo}}

而且效果很好。有没有更好的方法来写这个(也许没有 promise casts 和 Em.Object 创建)——我知道如果我把 Em.$.getJSON 放入模型钩子(Hook)中,这会自动工作。

最佳答案

你可以使用 DS.PromiseObject

var matchdayStats = DS.PromiseObject.create({
  promise: Em.$.getJSON((this.get('ENV.apiBaseURL')) + "/users/current/live_matchday_stats")
});

controller.set('matchdayStats', matchdayStats);

这是 Ember Data 在模板中访问/显示相关对象和这些对象的属性的方式。

关于javascript - Ember.js:将 Em.$.getJSON 转换为 promise 并将响应绑定(bind)到 Controller 上下文的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29421215/

相关文章:

javascript - 在 Ember.js 中重新创建 Bootstrap Dropdown 功能

arrays - 从 Ember 中的模型对嵌套数组进行排序?

ember.js - Handlebars 将对象传递给助手

javascript - jquery 网格中的过滤器工具栏中未填充下拉列表

ember.js - 如何为 ember-addon 中定义的组件添加集成测试

javascript - 避免在第一次更改后更改选择标签

javascript - AngularJS - 有没有一种方法可以在不使用路由的情况下将数据注入(inject) Controller ?

javascript - 获取每个 Handlebars 的父循环索引

javascript - 单击后禁用提交按钮以防止用户向服务器发送多个请求

javascript - 如何在 jquery 中验证整个 html 表值