【发布时间】:2018-04-30 08:02:13
【问题描述】:
我使用 jsViews 创建一个小表单。
在模板中,我定义了一些绑定到自定义处理程序的按钮。
在处理程序中,我想使用event 对象(特别是,我想阻止默认按钮行为,即提交外部<form>。
这在我测试过的所有浏览器上都可以正常工作,除了 Firefox。事件对象是 Firefox 的 undefined。所有其他浏览器都定义了一个MouseEvent 对象。
如何使用 FF 修复它?
这是一个小复制:
(function($) {
var dataVm = {
value: 42
};
var handlers = {
changeValue: function(valueToAdd) {
$.observable(dataVm).setProperty("value", dataVm.value + valueToAdd);
console.log(event); // Should not be undefined
}
};
$.templates("#mainTemplate").link("#container", dataVm, handlers);
})(jQuery);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jsviews/0.9.90/jsviews.min.js"></script>
<script id="mainTemplate" type="text/x-jsrender">
<input data-link="value" />
<button data-link="{on ~changeValue 1}">+1</button>
<button data-link="{on ~changeValue (-1)}">-1</button>
</script>
<div id="container">
</div>
PS:我使用 jQuery 1.12.4 和 jsViews 0.9.90
【问题讨论】:
-
事件参数来自哪里?我不知道它是从哪里来的。
-
@Anson:它是包含事件相关属性的标准对象
-
试试 console.log(arguments) 你会看到 arguments[1] 可能是你正在寻找的事件对象。跨度>
-
@anson:请发布答案,因为它似乎解决了我的问题
标签: jsviews