ko.bindinghandlers.with在IE8中失败



我有一个自定义绑定,用于集成jQuery UI对话框小部件,基于Ryan Niemeyer的回答:将jQuery UI对话与knockoutjs集成。

调用Dialog小部件后,我想绑定"with"绑定,如下所示:

ko.bindingHandlers.annotatePanel = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
    setTimeout(function() {
        $(element).dialog({
            autoOpen: false,
            modal: true,
            width: 840,
            resizable: false,
            close: function() {
                var data = valueAccessor();
                if (ko.isWriteableObservable(data)) {
                    data(null);
                }
            }
        });
    },0);
    //ko.applyBindingsToNode(element, { 'with': valueAccessor() }, bindingContext);
    //ko.bindingHandlers["with"].init.apply(this, arguments);
    ko.bindingHandlers.with.init.apply(element, valueAccessor(), allBindingsAccessor, viewModel, bindingContext);
},

这在Chrome和FireFox中运行良好,但在IE8中我收到以下错误:

"预期标识符…"

如果我更改代码以使用其中一个:

ko.applyBindingsToNode(element, {'with': valueAccessor()}, bindingContext);
or
ko.bindingHandlers["with"].init.apply(this, arguments);

我没有犯任何错误。

我怀疑这与"with"是IE的关键词有关。

如果这是一个已知的问题,有人能提供建议吗?

感谢

正如Ryan所说,

如果您需要IE兼容性,请不要使用保留字作为属性名称。解决方法是使用以下语法:

ko.bindingHandlers['<bindingName>'].init....

最新更新