簡體   English   中英

Ember內容在Route中不可用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM