ko.bindinghandlers.with在IE8中失败

时间:2013-11-26 22:51:50

标签: knockout.js

我有一个自定义绑定,用于集成jQuery UI Dialog小部件,基于Ryan Niemeyer对此的回答:integrating jquery ui dialog with 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的关键字这一事实有关。

如果这是一个已知问题,有人可以建议吗?

谢谢

1 个答案:

答案 0 :(得分:1)

正如瑞安所说,

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

ko.bindingHandlers['<bindingName>'].init....
相关问题