为什么骨干视图会发生两次变化?

时间:2013-12-07 13:46:14

标签: javascript jquery backbone.js

我有骨干视图:

var aView = Backbone.view.extend({
    events: {
        'change #select-opr': 'changeOperation'
    },
    initialize: function () {},
    render: function () {},
    changeOperation: function () {
        console.log("event triggered.");
    }
});

更改事件与选择下拉列表相关联。

<select name="operation" id="select-opr" style="height: 29px;">
    <option>Select an Attribute</option>
    <option value="method">Method</option>
    <option value="project">Project</option>
</select>

当我更改选择选项时,我在console.log中获得两个'event triggered'的日志。表示事件被触发两次。为什么会这样?

以前有人发现过这个问题吗? 我在做什么错误?

2 个答案:

答案 0 :(得分:0)

我不确定您要尝试的是什么,但是您应该将changeOperation绑定到所选的选项而不是选择吗?

答案 1 :(得分:0)

这是Javascript中常见的Bug。你可以找到很多关于互联网的文章特别是因为事件被解雇两次。我不是Backbone的粉丝,但在jquery你可以试试这样的东西

 $(document).on('click', '#task-list li', function(e)
 {
       alert('Hellow world');
       e.stopPropagation();
       return false;
 });

它肯定是Javascript问题,因为如果你点击谷歌并搜索事件火两次你会看到Angular,Jquery和骨干等所有都在某处发射事件两次甚至三次。所以,它似乎是这背后的javascript。当然,如果您使用Mozilla Developers Network进行搜索,那么您可以看到专家们也这样说过。