0

У меня есть набор транзакций, которые имеют количество, описание, тип (дебет/кредит) и категории (домашний, автоматический, разный и т. Д.). Я пытаюсь отфильтровать свои результаты, чтобы показать только «домашнюю» категорию в этом примере. У меня есть другое представление, которое отображает все результаты моей коллекции. Ниже я попытался создать новую коллекцию «results», а затем вывести ее в свой шаблон handlebars.Фильтрация коллекции с магистралью MV *

render: function() { 
    var results = this.collection.where({category: "home"}); 
    var filteredCollectionHome = new Backbone.Collection(results); 

    this.$el.html(this.template({filteredCollectionHome: this.collection.homeView(true)})); 
} 

ДомView находится внутри моего коллекционного файла.

homeView: function (toJSON) { 
     this.sortByDate(-1); // descending so latest are first 

     if(!toJSON) { 
      return this.models; 
     } else { 
      var models = this.models, 
       idx = -1, 
       json = [], 
       model; 

      while(model = models[++idx]) { 
       json.push(model.attributes); 
      } 
      return json; 
     } 

    }, 
+0

Я думаю, вам нужно использовать findWhere, вместо того, чтобы просто где ... – LouisK

ответ

0

Добавить метод в вашу коллекцию, который фильтрует нужные вам данные и возвращает новую коллекцию с отфильтрованными результатами.

var Transactions = Backbone.Collection.extend({ 
    model: Transaction, 

    byCategory: function(name) { 
    filtered = this.filter(function(trans) { 
     return trans.get("category") === name; 
     }); 
    return new Transactions(filtered); 
    } 

}); 

var home_transactions = Transactions.byCategory("home") 
+0

Так что в моей функции я использую, что последняя строка кода вы дали мне и попытался бросить его в моем это. $ El.html визуализации * this.template (home_transactions)); Im 'получает 0 результатов. Я зарегистрировал home_transactions до этого, и я получил объект с 1 массивом внутри него. Но это не выводит мой шаблон. Мой шаблон шаблона: Handlebars.compile ($ ('# all-transaction-template'). Html()) – dbodnar

+0

home_transactions вернет массив моделей. Вам нужно будет перебрать его и вывести желаемое значение – synapze

+0

Будет ли это сделано в коллекции или в представлении? – dbodnar

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