为什么骨干视图触发两次更改事件?
我的骨干观点如下:
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'
日志。 意味着事件被触发两次。 这是为什么?
有没有人发现过这个问题? 我在做什么错误?
这是Javascript中的一个常见错误。 你可以在互联网上找到很多专门针对SO的文章,因为事件被激发了两次。 我不是骨干的粉丝,但在jQuery中,你可以尝试这样的事情
$(document).on('click', '#task-list li', function(e)
{
alert('Hellow world');
e.stopPropagation();
return false;
});
而且这绝对是Javascript的问题,因为如果你打谷歌和搜索事件触发两次,你会看到Angular,Jquery和骨干等都在某处射击事件两次甚至三次。 所以,它似乎是在这背后的JavaScript。 当然,如果你使用Mozilla开发者网络进行搜索,那么你可以看到专家也这么说。
我不确定你想要实现什么,但是应该将changeOperation
绑定到选择的选项而不是选择?
上一篇: Why backbone view fires change event twice?
下一篇: Backbone events not fired by a jquery click event inside the view