2015-04-30 191 views
0

我一直在嘗試幾個小時,沒有運氣。如果你可以看到圖像,我有一個溫和複雜的模型。圖像取自調試中的Chrome。Backbone.js刪除模型

我需要從集合中刪除模型,也我需要能夠更改骨幹將射擊它的ajax刪除的URL。因此,本質上,這是我的模型結構:

attributes: 
    favorites { 
     bookmarkedArticles: [{id: 123123},{id: ...}], 
     bookedmarkedSearches: [{}], 
     dispatchesMailds: [] 
    } 

如何刪除ID爲123123的書籤文章中的模型?

我已經試過這樣:

var model = new metaModel(
       { 
        favourites: { 
         bookmarkedArticles: { 
          id: "123123" 
         } 

        } 
       } 
     ); 
model.destroy(); 

也是這個

aamodel.headerData.collection.remove(model); 

沒有成功可言。

Model image from Chrome Debug

+1

_沒有成功._ ...那究竟意味着什麼?任何錯誤消息?需要銷燬哪個網址?請更具體一點。 – Exinferis

回答

1

提供不給予了很多的細節,但我會盡力的信息來回答考慮兩種方案:

選項A: 您試圖刪除具有集合中的一個模型bookmarkedArticle.id = 「123123」。如果是這種情況,並考慮書籤文章它只是一個對象數組,我會建議使用下劃線方法filter過濾集合,然後刪除過濾器返回的模型。

var id = 123123; 
var modelsToDelete = aamodel.headerData.collection.filter(function(model){ 
    // find in the bookmarked articles 
    return _.find(model.get('bookmarkedArticles'), function(ba){ 
     return (ba.id === id); 
    }); 
}); 
_.each(modelsToDelete, function(model){ 
    model.destroy(); 
}); 

選項2:如果你想刪除只使用「毀滅」的方法,firstable你必須「bookmarkedArticles」轉換爲Backbone.Collection,因爲它是關聯到你的主力機型書籤的文章「123123」只是對象數組,有一些工具,用於骨幹網,可以讓你做到這一點很容易:

https://github.com/blittle/backbone-nested-models

但默認情況下,這是不可能的,那麼,如果你想刪除「bookmarkedArticle」你可以創建Backbone.Model然後使用方法destroy。例如:

var BookmarkedArticle = Backbone.Model.extend({ 
    url: function(){ 
    return '/bookmarkArticle/' + this.id; 
    } 
}); 

new BookmarkedArticle({"id": "123123","master": "5",...}).destroy(); 

希望這些信息很有用,並提供一些指導來解決您的問題。