2014-10-29 84 views
0

我有我的控制器,記錄是一個計算屬性。在orderBypage更改我的應用程序執行新呼叫。 該控制器完美的作品:Ember - 承諾數組

App.IndexController = Ember.ArrayController.extend({ 
    ... 
    records: function() { 
    return this.store.find("record", { 
     page: this.get("page"), 
     page_size: this.get("pageSize"), 
     order_by: this.get("orderBy") 
    }) 
    }.property("key", "orderBy", "page"), 
}) 

但是,如果我想請求時顯示一個沙漏:

App.IndexController = Ember.ArrayController.extend({ 
    ... 
    records: function() { 
    this.showHourglass(); 
    return this.store.find("record", { 
     page: this.get("page"), 
     page_size: this.get("pageSize"), 
     order_by: this.get("orderBy") 
    }).then(function(records) { 
     this.hideHourglass(); 
     return records; 
    }) 
    }.property("key", "orderBy", "page"), 
}) 

我得到這個錯誤: Uncaught Error: Assertion Failed: The value that #each loops over must be an Array. You passed {_id: 59, _label: undefined, _state: undefined, _result: undefined, _subscribers: }

我怎樣才能解決這個問題? 感謝

編輯: 在我的模板有一個循環,在物業:

{{#each records}} 
    ... 
{{/each} 

回答

0

這是監守this.store.find("record")返回ArrayPromise。但是因爲你正在鏈接一個新的.then,所以返回的值只是一個常規的承諾,不能被迭代。

App.IndexController = Ember.ArrayController.extend({ 
    ... 
    records: function() { 
    this.showHourglass(); 
    var promiseArray = this.store.find("record", { 
     page: this.get("page"), 
     page_size: this.get("pageSize"), 
     order_by: this.get("orderBy") 
    }) 

    promiseArray.then(function(records) { 
     this.hideHourglass(); 
    }) 

    return promiseArray; 
    }.property("key", "orderBy", "page"), 
}) 
+0

現在感謝它的工作! – Griffosx 2014-10-29 13:06:41