Javascript 使用主干MV筛选集合*
我有一系列交易,包括金额、描述、类型(借方/贷方)和类别(房屋、汽车、杂项等)。在这个例子中,我试图过滤掉我的结果,只显示“家”类别。我的另一个视图用于显示集合中的所有结果。下面我尝试创建一个新的集合“结果”,然后将其输出到我的把手模板Javascript 使用主干MV筛选集合*,javascript,backbone.js,backbone-views,backbone.js-collections,Javascript,Backbone.js,Backbone Views,Backbone.js Collections,我有一系列交易,包括金额、描述、类型(借方/贷方)和类别(房屋、汽车、杂项等)。在这个例子中,我试图过滤掉我的结果,只显示“家”类别。我的另一个视图用于显示集合中的所有结果。下面我尝试创建一个新的集合“结果”,然后将其输出到我的把手模板 render: function () { var results = this.collection.where({category: "home"}); var filteredCollectionHome = new Backbone.Co
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)}));
}
homeView位于我的集合文件中
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;
}
},
在集合中添加一个方法,用于筛选所需的数据,并返回一个包含筛选结果的新集合
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")
我认为您需要使用findWhere,而不是where…因此在我的渲染函数中,我使用您给我的最后一行代码,并尝试将其放入我的this.$el.html*this.template(home_transactions));我得到了0个结果。在此之前,我记录了home_事务,得到了一个包含1个数组的对象。但它没有输出到我的模板。我的模板是template:handlebar.compile($(“#所有事务模板”).html())home_事务将返回一个模型数组。您需要对其进行迭代,并在模板中输出所需的值。。示例,如果您使用下划线。或者你可以在视图中预先格式化它,然后在模板中输出。你所说的背后的想法是有道理的。但是今天我花了几个小时来做这个,我需要休息一下,明天再看看。