Knockout:在提交和单击绑定中捕获异常
Knockout: Catch exceptions in submit and click bindings
与其在我的所有提交方法中放置非DRY try/catch
块,并在视图模型上单击方法,只为了显示一个消息框并写入控制台,我希望用一种跨领域的方法来做到这一点。
是否可以用当前impl的包装版本覆盖click
和submit
绑定,该版本基本上用try/catch
包装原始调用?
我试过这个:
let defaultClickBindingHandler = (<any>ko.bindingHandlers).click;
(<any>ko.bindingHandlers).click = {
init(element, valueAccessor, allBindings, viewModel, bindingContext) {
try {
defaultClickBindingHandler.init(element, valueAccessor, allBindings, viewModel, bindingContext);
} catch (e) {
shell.error(e);
}
},
update(element, valueAccessor, allBindings, viewModel, bindingContext) {
try {
defaultClickBindingHandler.update(element, valueAccessor, allBindings, viewModel, bindingContext);
} catch (e) {
shell.error(e);
}
},
};
但我在控制台中得到了以下错误:
Unable to process binding "click: function (){return refresh }"
Message: input.replace is not a function;
View: [redacted];
ModuleId: [redacted]
听起来window.onerror
可能就是您所需要的。但是,如果您确实决定要包装绑定,那么这是可能的。请参阅这个jsfiddle示例,它显示了如何包装click
绑定。
我无法确定为什么您的示例代码不起作用。我可以看到的一个问题是,您试图包装默认绑定的init
和update
函数。这不会起作用,因为click
和submit
都只实现init
函数。绑定只定义其中一个函数是完全有效的。例如,css
绑定仅实现update
功能。
相关文章:
- 在VanillaJS中模拟模型双向数据绑定
- 当显式定义控制器参数时,默认模型绑定器会发生异常
- 使用datetimepicker敲除js绑定会出现异常
- 未捕获的类型错误:对象#<对象>没有方法'绑定'-脊梁骨
- AngularJS 2 - 内部属性数据绑定 - 异常:类型错误:无法读取未定义的属性
- 未捕获错误:无法分析绑定挖空
- JQuery 绑定 () 导致的异常行为
- 防止文档绑定捕获keydown()
- 在dom绑定处捕获自定义事件
- 绑定JavaScript课程未捕获语法错误:意外的令牌<
- 未捕获的类型错误:对象#<HTMLDivElement>没有方法'绑定'
- Knockout:在提交和单击绑定中捕获异常
- 在使用WebDriver(HtmlUnit、Ruby绑定)时,是否可以忽略JavaScript异常
- 冒号后面的Regex捕获绑定参数
- 未捕获的ReferenceError:无法使用Ajax处理绑定
- 事件绑定——在闭包中捕获变量
- 淘汰赛'text输入'和'值'绑定无法捕获从JS所做的更改
- AngularJS,我如何使用服务来捕获HTTP数据并将其绑定到我的控制器
- React onClick 事件生成:“未捕获的类型错误:无法读取未定义的属性”,尽管绑定了
- 获得未捕获错误:无法解析knockout中的绑定