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之外什么都没有发生,它对最终用户是不可见的。My
shell.error()
impl基本上显示一个带有错误消息的Toastr弹出窗口。
Unable to process binding "click: function (){return refresh }"
Message: input.replace is not a function; 
View: [redacted]; 
ModuleId: [redacted]