2015-04-30 2 views
0

Я пытаюсь в течение нескольких часов, без везения. Если бы вы могли видеть на изображении, у меня была довольно сложная модель. Изображение взято из Chrome в отладке.Backbone.js удаление модели

Мне нужно удалить модель из коллекции, также Мне нужно изменить URL-адрес, где позвоночник будет снимать его ajax для удаления. Таким образом, в сущности, это моя модель структуры:

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

Как я могу удалить модель в bookmarkedArticles с идентификатором 123123?

Я попытался это:

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

        } 
       } 
     ); 
model.destroy(); 

также это

aamodel.headerData.collection.remove(model); 

Нет успеха на всех.

Model image from Chrome Debug

+1

_Нет успеха вообще ._ ... что это значит? Любое сообщение об ошибке? Какой URL-адрес вызывается для уничтожения? Пожалуйста, будьте более конкретными. – Exinferis

ответ

1

Представленная информация не дает много деталей, но я попытаюсь ответить рассматривает два сценария:

Вариант А: Вы пытаетесь удалить модель в коллекции, которая имеет bookmarkedArticle.id = "123123". если это так, и учитывая, что bookmarkedArticles это просто массив объектов, я бы предложил фильтровать коллекцию с помощью метода подчеркивания 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: Если вы хотите удалить отмеченную статью «123123», связанный с вашей основной модели, используя только метод «уничтожить», firstable вы должны преобразовать «bookmarkedArticles» в Backbone.Collection, как это просто массив объектов, есть некоторые утилиты для Backbone, что позволяет сделать это легко:

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(); 

Надеемся, что эта информация полезна и поможет вам решить вашу проблему.

Смежные вопросы