2014-09-03 137 views
0

我正在使用ember.js進行UI端開發的應用程序。應用程序需要在彈出的模式窗口上執行所有操作。所以我創建了一個具有所有必需的JavaScript模型的對象,以便在該彈出模型中顯示。這工作正常,但是當我們處於該模式彈出窗口時,如果我們更改了javascript模型的內容,則最新的模型內容不會顯示在列表中。的代碼片段如下:javascript的模式是 -Ember.js:如何在模態彈出窗口中顯示模型的當前內容

App.ModelToShow = DS.Model.extend({ 
    name : DS.attr(), 
    label : DS.attr(), 
}); 

所以,當我打電話從App.js模型模板,它是這樣的

obj = { modelToShow : this.store.find('modelToShow')}; 
this.send('openModal', 'myTemplate', obj); 

模板有一個表,我展示行中「modelToShow」的所有內容。上面使用的openModal用於在obj顯示的模式窗口中打開模板。 因此,現在在這個頁面上,如果我做了一些操作,即changeContent,那麼它實際上並沒有改變它。我的操作方法如下:

App.ModelToShowController = App.ModalController.extend({ 
    actions:{ 
    changeContent : function(){ 
     self.store.push('modelToShow', { 
      id : 2, 
      name : 'radhe',      
      label : 'new label' 
     }); 
     self.store.find('modelToShow', 1).then(function (modelToShow) { 
      modelToShow.destroyRecord(); 
     }); 
    } 
    } 
}); 

令我驚訝的,如果我刪除的記錄,在模型反映多數民衆贊成,但不是我推的對象,儘管這是在商店可用,如果我與Ember插件調試。而我使用的這個destroyRecord發送一個服務器Web服務調用來刪除那條記錄,如何避免這種情況,並且只從商店中可用的模型中刪除記錄。

回答

1

store.unloadRecord(modelToShow);將從商店只

http://emberjs.com/api/data/classes/DS.Store.html#method_unloadRecord

我不認爲推着記錄,並將其裝入商店中刪除它,我認爲它只是緩存它,你可以嘗試之後,你找到記錄推它。

self.store.push('modelToShow', { 
     id : 2, 
     name : 'radhe',      
     label : 'new label' 
    }); 
    self.store.find('modelToShow', 2); 
+0

非常感謝很多人,這解決了刪除調用問題,但仍然無法填充我推入的記錄存儲。我嘗試更新而不是推送,仍然沒有用。 – kavinder 2014-09-03 05:10:40

+0

您可能需要通過在店內撥打查找號碼 – Kingpin2k 2014-09-03 05:24:52

+0

找到該記錄的主要商店,這是推動它。我試過了: var someObject = self.store.all('modelToShow'); \t \t \t \t \t this.set('tableContent',someObject); 這現在正在爲我工​​作 – kavinder 2014-09-03 09:29:20

相關問題