Javascript 淘汰:捕获提交和单击绑定中的异常
与其在我的所有提交方法中放置非干式Javascript 淘汰:捕获提交和单击绑定中的异常,javascript,knockout.js,Javascript,Knockout.js,与其在我的所有提交方法中放置非干式try/catch块,并在我的viewmodels上单击方法以显示消息框并写入控制台,我希望使用一种横切方式来实现这一点 是否可以用当前impl的包装版本覆盖单击和提交绑定,该版本基本上用try/catch包装原始调用 我试过这个: let defaultClickBindingHandler = (<any>ko.bindingHandlers).click; (<any>ko.bindingHandlers).click = {
try/catch
块,并在我的viewmodels上单击方法以显示消息框并写入控制台,我希望使用一种横切方式来实现这一点
是否可以用当前impl的包装版本覆盖单击
和提交
绑定,该版本基本上用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);
}
},
};
它听起来确实像是一个窗口。一个错误可能就是你所需要的。但是,如果您确实决定要包装绑定,那么这是可能的。请查看显示如何包装
单击
绑定的内容
我不能确定为什么您的示例代码不起作用。我看到的一个问题是,您试图包装默认绑定的
init
和update
函数。这不起作用,因为单击
和提交
都只实现初始化
功能。绑定只定义其中一个函数是完全有效的。例如,css
绑定只实现了update
功能。Wow。已经被否决了吗?我想知道我的问题出了什么问题?请告诉我,我会尽我最大的努力解决它-我很想得到一个答案。你确定这真的是你想要的吗?您没有提供任何方法来处理抛出的错误,这是一种“一刀切”的解决方案。也许像window.onError这样的东西可以用来处理“默认”错误处理案例。不确定是否有否决权,对我来说似乎是一个有效的问题,但我们需要更多的信息来重现这个问题。你能做一把小提琴吗?窗户是一个有趣的主意,我会研究一下。我基本上希望至少在UI中显示一个错误,即使我自己实际上无法处理它,因为目前除了console.log之外什么都没有发生,它对最终用户是不可见的。Myshell.error()
impl基本上显示一个带有错误消息的Toastr弹出窗口。
Unable to process binding "click: function (){return refresh }"
Message: input.replace is not a function;
View: [redacted];
ModuleId: [redacted]