Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用主干MV筛选集合*_Javascript_Backbone.js_Backbone Views_Backbone.js Collections - Fatal编程技术网

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_事务将返回一个模型数组。您需要对其进行迭代,并在模板中输出所需的值。。示例,如果您使用下划线。或者你可以在视图中预先格式化它,然后在模板中输出。你所说的背后的想法是有道理的。但是今天我花了几个小时来做这个,我需要休息一下,明天再看看。