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_Event Handling_Backbone Events - Fatal编程技术网

Backbone.js 主干>绑定编号选择选项

Backbone.js 主干>绑定编号选择选项,backbone.js,event-handling,backbone-events,Backbone.js,Event Handling,Backbone Events,我有一个select多选,我不知道如何在BackboneJS中创建一个事件来检测select何时获取或丢失项目 最初我做了这样的事情: var view = new Backbone.View.extend({ initialize : function() { ... }, events : { "change select" : "changed" } }); <div id="container"> &l

我有一个select多选,我不知道如何在BackboneJS中创建一个事件来检测select何时获取或丢失项目

最初我做了这样的事情:

var view = new Backbone.View.extend({
    initialize : function() {
        ...
    },
    events : {
        "change select" : "changed"
    }
});
<div id="container">
    <select id="select_1" ...>
    <input id="add" ...>
    <input id="remove" ...>
    <select id="select_2" ...>
</div>
但在本例中,唯一检测它的是选定的项目,而不是添加或删除的项目


有什么想法吗?谢谢。

您可以尝试侦听DomainNodeInserted和DomainNodeRemoved事件

$('#select_2').on('DOMNodeInserted', function (e) {alert('node added')});
$('#select_2').on('DOMNodeRemoved', function (e) {alert('node removed')});
示例->

有,但它们已被弃用:

不赞成 此功能已从Web上删除。尽管某些浏览器可能仍然支持它,但它正在被删除。不要在旧项目或新项目中使用它。使用它的网页或Web应用程序可能随时中断

突变事件已替换为突变观察者,但如果您尝试使用它们,则可能会替换

但这一切都没有意义;如果您构造视图,使“添加”和“删除”按钮位于视图内部,则可以使用简单可靠且受支持的everywhere主干视图事件来处理一切。大概是这样的:

var view = new Backbone.View.extend({
    initialize : function() {
        ...
    },
    events : {
        "change select" : "changed"
    }
});
<div id="container">
    <select id="select_1" ...>
    <input id="add" ...>
    <input id="remove" ...>
    <select id="select_2" ...>
</div>
请注意,在视图中使用时,此.x在视图中与此相同。$el.findx;这并不是绝对必要的,但这是一个好习惯,可以防止你的观点与它不拥有的东西相混淆

如果视图在向第二个列表添加新条目或从第二个列表中删除条目时需要执行更多操作,则可以将这些操作放在add和remove方法中。如果其他人需要知道,您可以:

在视图上触发事件,并让应用程序的其他部分侦听这些事件。 通过全局事件总线触发事件,并让应用程序列表的其他部分连接到事件总线。 将更改应用于视图的集合或模型,并让应用程序的其他部分侦听来自该集合或模型的事件。
演示:

我不知道域名插入事件。我将在主干事件中测试它,看看会发生什么,并告诉您一些事情。谢谢。你考虑过在一个集合中组织每一组选项吗?此方法将提供要侦听的收集事件。