[英]Ember content not available in Route
誰能告訴我為什么我的Ember Route中無法使用usersArr? 請參閱下面發出的警報。
App.UsersIndexRoute = Ember.Route.extend({
setupController: function (controller, model) {
var usersArr = App.userService.findUsers(); // there are 10 items in this
var arrControl = Ember.ArrayController.create({
content: usersArr,
sortProperties: ['id'],
sortAscending: true
});
// begin: my test code
alert('usersArr.length: ' + usersArr.length); // displays "0"
// end: my test code
controller.set('currentPage', {label: 1, startItem: 0});
controller.set('content', arrControl);
}
});
控制器和頁面顯示usersArr數據就好了。 但是,我根本無法弄清楚如何在Route.setupController()方法中訪問它。 我想將其切成一個子模板。 有任何想法嗎?
之所以將長度視為0是因為,當執行find()
Ember
立即以長度為0(promise)的對象進行響應,但是在后台Ember
用數據庫查詢,並且一旦請求成功,該對象就會被填充與記錄。
它是異步發生的,即javascript開始執行方法中的其余各行,而不是等待數據被加載,但是ember為我們提供了isLoaded
標志來知道記錄何時完全完成加載,因此我們可以將其與observer
結合記錄完成加載后執行操作。
你的情況我會做
App.UsersIndexRoute = Ember.Route.extend({
setupController: function (controller, model) {
this.set('usersArr', App.userService.findUsers()); // there are 10 items in this
/* your code */
},
notify: function(){
alert(this.get('usersArr.length'));
}.observes("usersArr.isLoaded")
});
它在模板中可以正常工作的原因是,默認的車把助手知道綁定, Ember
會為我們進行更新...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.