我正在尝试通过我的 REST API 获取当前登录的用户,然后将其设置为 ApplicationController 的属性。这就是我尝试这样做的方式:
App.ApplicationController = Ember.Controller.extend({
init: function() {
this._super();
var self = this;
App.User.findCurrent().then(function(user) {
self.set('currentUser', user);
});
}
});
App.User = Ember.Object.extend({});
App.User.reopenClass({
findCurrent: function() {
return $.getJSON('/api/v1/users/current').then(
function(response) {
return response.user;
}
);
}
});
当我检查 Chrome 网络选项卡时,我看到调用了 API 并返回了 JSON,但是当我尝试{{currentUser.name}}
在我的应用程序模板(或它的一部分)中访问时,它不会返回名称。也没有给出错误。
但是在应用程序模板中它不会返回它。
我错过了什么?
谢谢!
编辑
当我创建另一个控制器时,例如HelpController
并访问/help
,然后{{currentUser.name}}
返回用户名:
App.HelpController = Ember.Controller.extend({
needs: ['application'],
currentUser: Ember.computed.alias('controllers.application.currentUser')
});
编辑 2
抱歉,我忘了提到我实际上是在尝试{{currentUser.name}}
从部分({{partial 'sidebar'}}
)中使用,但这不应该改变任何东西,因为这是相同的范围,对吧?
编辑 3
我注意到一件非常奇怪的事情。当我调用{{currentUser.name}}
我的应用程序模板(顺便说一句,这不是我想要的)时,它也可以在{{partial 'sidebar'}}
.
编辑 4
按要求:
DEBUG: Ember.VERSION : 1.0.0-rc.6 ember.js?body=1:361
DEBUG: Handlebars.VERSION : 1.0.0-rc.4 ember.js?body=1:361
DEBUG: jQuery.VERSION : 1.10.0