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
Backbone.js 如何通过不重新呈现整个列表从集合和集合视图中删除项目?可能吗?_Backbone.js_Backbone Views - Fatal编程技术网

Backbone.js 如何通过不重新呈现整个列表从集合和集合视图中删除项目?可能吗?

Backbone.js 如何通过不重新呈现整个列表从集合和集合视图中删除项目?可能吗?,backbone.js,backbone-views,Backbone.js,Backbone Views,嗨,我对backbone.js有点陌生 是否有一种方法可以从集合中删除某个项目(仅此项目),而不必刷新列表。相反,只从视图和集合中删除该项,视图集合中不会发生刷新/重新呈现。或者甚至有可能吗 以下是我的代码片段: var DateModel = Backbone.Model.extend({ defaults: function() { return { index: '', valueFrom: '',

嗨,我对backbone.js有点陌生

是否有一种方法可以从集合中删除某个项目(仅此项目),而不必刷新列表。相反,只从视图和集合中删除该项,视图集合中不会发生刷新/重新呈现。或者甚至有可能吗

以下是我的代码片段:

var DateModel = Backbone.Model.extend({
    defaults: function() {
        return {
            index: '',
            valueFrom: '',
            valueTo: '',
            status: '',
            showText: '',
            text: ''
        }
    },
});

var DateList = Backbone.Collection.extend({
    model: DateModel
});

var dateList = new DateList();

var DateView = Backbone.View.extend({
    model: new DateModel(),
...
});

var DateListView = Backbone.View.extend({
    model: dateList,
    el: $('#date-list-container'),
    initialize: function() {
        this.listenTo(this.model, 'add', this.render);
        this.listenTo(this.model, 'remove', this.render);
        this.listenTo(this.model, 'reset', this.render);
    },
    render: function() {
                // code for rendering here...
                _.each(this.model.models, function(date){...});
            }
 });

您可以通过将事件侦听器从
this.render
更改为一个自定义侦听器函数来完成此操作,该函数接收作为参数删除的模型,而不是重新渲染整个视图,只需从视图中删除表示该模型的HTML元素。这样,您不必总是重新渲染整个视图(这可能会很昂贵),而只需更改已更改的部分

例如,这一行:

this.listenTo(this.model, 'remove', this.render);
将替换为另一个事件处理程序函数,该函数接收删除事件的参数:

删除(模型、集合、选项)-从集合中删除模型时

因此,您可能有这样一个事件侦听器函数:

modelRemoved: function(model, collection, options) {
  // code to find the HTML element for 'model' and remove it from the DOM
}
然后将其用作删除事件的事件处理程序:

this.listenTo(this.model, 'remove', this.modelRemoved);

您可以通过将事件侦听器从
this.render
更改为一个自定义侦听器函数来完成此操作,该函数接收作为参数删除的模型,而不是重新渲染整个视图,只需从视图中删除表示该模型的HTML元素。这样,您不必总是重新渲染整个视图(这可能会很昂贵),而只需更改已更改的部分

例如,这一行:

this.listenTo(this.model, 'remove', this.render);
将替换为另一个事件处理程序函数,该函数接收删除事件的参数:

删除(模型、集合、选项)-从集合中删除模型时

因此,您可能有这样一个事件侦听器函数:

modelRemoved: function(model, collection, options) {
  // code to find the HTML element for 'model' and remove it from the DOM
}
然后将其用作删除事件的事件处理程序:

this.listenTo(this.model, 'remove', this.modelRemoved);

并查看记录的详细信息,了解他们各自的论点谢谢!我是否必须调用
remove(模型、集合、选项)
modelRemoved
自定义事件中?不,很抱歉格式混乱(从文档中复制),但是
remove
不是实际的功能。这是您必须实现的事件处理程序函数的类型签名。这就是为什么我的
modelRemoved
函数示例具有相同的参数,请查看文档,了解它们各自采用的参数的详细信息。谢谢!我是否必须调用
remove(模型、集合、选项)
modelRemoved
自定义事件中?不,很抱歉格式混乱(从文档中复制),但是
remove
不是实际的功能。这是您必须实现的事件处理程序函数的类型签名。这就是为什么我的
modelRemoved
函数示例具有相同的参数