2013-10-16 50 views
0

我有一些困難重新加載我的餘燼RESTful模型,我不知道爲什麼。這裏的[概念]我想要做的... http://jsbin.com/EfuBiNo/4/editREST適配器模型重新加載

該代碼和我的代碼之間的唯一區別是,我沒有使用FixtureAdapter,我使用RESTAdapter。不幸的是,重新加載我的RESTful模型會導致DS.RecordArray中的記錄數增加一倍。所以你可以看到控制檯正在記錄(在每次重載時)RecordArray中有兩條記錄。

當我用RestAdapter運行此計數時,計數爲2 ... 4 ... 8 ... 16 ....等。所以我不確定爲什麼它每次都會翻倍,但如果有人對爲什麼 - 或者更好的方法有另一種方式來重新載入這些記錄 - 我會非常感激。謝謝。

+1

我更新了jsbin使用REST接口,但爲我工作。請看看http://jsbin.com/EfuBiNo/7/edit。也許你在jsbin中缺少一些東西,或者你的服務器正在返回附加數據... –

+1

你的服務器是否爲每個資源返回一個id屬性?最重要的是,它是否每次都爲相同的資源返回相同的ID? – ahaurw01

+0

謝謝馬西奧,ahaurw01 - 這是失蹤的身份證。在數據庫中,但不在從服務器返回的記錄中。添加解決了這個問題。雖然我仍然想知道是否沒有更好的方法來做到這一點。每條記錄都以這種方式更新,發出新的請求。你知道是否有辦法一次重新加載RecordArray中的所有模型?我看着這個錯誤的方式嗎? – sentinel21

回答

4

如果您需要刷新的記錄集,就已經加載他們之後,你可以這樣做:

App.ThingsRoute = Ember.Route.extend({ 
    model: function() { 
    return this.store.find('thing'); 
    }, 

    actions: { 
    refreshThings: function() { 
     var controller = this.controller; 
     this.store.find('thing').then(function (things) { 
     controller.set('content', things); 
     }); 
    } 
    } 
}); 

這隻會所有thing又在發讀取和設置記錄陣列作爲當承諾解決時,控制器上的內容。如果返回的商品已經在您的商店進行了編目(ID已經存在),那麼您不會得到大量重複的記錄;東西只會更新。如果有以前不知道的新記錄,那麼現在就可以在ThingsController上找到這些記錄。

這也是有用的,如果你正在做某種類型的查詢的:

this.store.find('thing', {color: 'red'}) 
+1

這很有效。謝謝! – sentinel21

+0

你打賭!插座聽起來比這更有趣,tho :) – ahaurw01

+0

嗨。你將如何實現它以定期刷新(例如每10秒)?謝謝。 – Soullivaneuh