我試圖通過我的REST API獲取當前登錄的用戶,然後將其設置爲ApplicationController的屬性。這是我正在努力做到這一點:Ember.js在加載時設置應用程序屬性
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
我發現很奇怪的東西。當我在我的應用程序模板(這不是我想要的btw)中調用{{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
我創建了一個jsbin並運行,請看看http://jsbin.com/ucanam/487/edit。 –
這很奇怪。這確實和我一樣! – EsTeGe
沒錯。你可以在你的問題中添加handlebar,ember和jquery的版本嗎?這是在瀏覽器控制檯中記錄的。當應用程序啓動。 –