Ember.js:将 Em.$.getJSON 转换为承诺并将响应绑定到控制器上下文的正确方法?
Ember.js: Proper way to cast Em.$.getJSON into a promise and bind response to controller context?
我正在使用 $.getJSON 获取一些数据,我想将这些数据异步绑定到控制器上下文。我在我的路线中想出了这个 - 这很有效,但我对此并不满意:
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 放入模型钩子中,这会自动工作。
您可以使用 DS.PromiseObject
var matchdayStats = DS.PromiseObject.create({
promise: Em.$.getJSON((this.get('ENV.apiBaseURL')) + "/users/current/live_matchday_stats")
});
controller.set('matchdayStats', matchdayStats);
这是 Ember 数据 accesses/displays 相关对象和这些对象在模板中的属性的方式。
我正在使用 $.getJSON 获取一些数据,我想将这些数据异步绑定到控制器上下文。我在我的路线中想出了这个 - 这很有效,但我对此并不满意:
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 放入模型钩子中,这会自动工作。
您可以使用 DS.PromiseObject
var matchdayStats = DS.PromiseObject.create({
promise: Em.$.getJSON((this.get('ENV.apiBaseURL')) + "/users/current/live_matchday_stats")
});
controller.set('matchdayStats', matchdayStats);
这是 Ember 数据 accesses/displays 相关对象和这些对象在模板中的属性的方式。