Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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 如何过滤Backbone.js收集和重新发布应用程序视图?_Javascript_Mongodb_Backbone.js_Mongoose_Singlepage - Fatal编程技术网

Javascript 如何过滤Backbone.js收集和重新发布应用程序视图?

Javascript 如何过滤Backbone.js收集和重新发布应用程序视图?,javascript,mongodb,backbone.js,mongoose,singlepage,Javascript,Mongodb,Backbone.js,Mongoose,Singlepage,这完全是一个Backbone.js noob问题。我正在使用ToDo Backbone.js示例,试图构建一个相当简单的单一应用程序界面。虽然todo项目更多的是关于用户输入,但该应用程序更多的是基于用户选项(单击事件)过滤数据 我对Backbone.js和Mongoose完全陌生,一直无法找到一个很好的例子来说明我正在尝试做什么。我已经能够让我的api从MongoDB集合中提取数据,并将其放入Backbone.js集合中,该集合在应用程序中呈现数据。我一辈子都不知道如何过滤数据并重新呈现应用程

这完全是一个Backbone.js noob问题。我正在使用ToDo Backbone.js示例,试图构建一个相当简单的单一应用程序界面。虽然todo项目更多的是关于用户输入,但该应用程序更多的是基于用户选项(单击事件)过滤数据

我对Backbone.js和Mongoose完全陌生,一直无法找到一个很好的例子来说明我正在尝试做什么。我已经能够让我的api从MongoDB集合中提取数据,并将其放入Backbone.js集合中,该集合在应用程序中呈现数据。我一辈子都不知道如何过滤数据并重新呈现应用程序视图。我正在尝试按文档中的“类型”字段进行筛选

这是我的剧本:

(我完全知道需要进行一些主要的重构,我只是在快速原型化一个概念。)

您是否尝试过使用“leads”筛选结果进行收集

差不多

window.AppView = Backbone.View.extend({
    el: $("#main"),
    events: {
        "click #leads .highlight" : "filterLeads"
    },
    initialize: function() {
        Jobs.bind('add', this.addOne, this);
        Jobs.bind('reset', this.render, this); //render on reset

        Jobs.fetch(); //this triggers reset
    },
    addOne: function(job) {
        var view = new JobView({model: job});
        this.$("#activitystream").append(view.render().el);
    },
    //add a render function
    render: function() {
        this.$("#activitystream").empty(); //empty out anything thats in there

        Jobs.each(this.addOne);
    },
    filterLeads: function() {
        Jobs.reset(Jobs.leads()); //reset Jobs with only the leads
    }
});
此外,您的AppView没有“render”方法,但您在此处引用它:

Jobs.bind('all', this.render, this);

伟大的谢谢你,瑞安。提供的评论确实帮助我更好地了解了Backbone.js的工作原理。
Jobs.bind('all', this.render, this);