Knockout在IE7中不能正确评估表达式

5
当我在Mozilla中运行程序时,它解析了knockout表达式并显示了observable数组中的值。但是当我在IE7中执行相同的操作时,它会显示knockout代码。
Mozilla结果
value 1
value 2
value 3

IE7结果

function observable() { 
   if (arguments.length > 0) {
        // Write
        // Ignore writes if the value hasn't changed
        if ((!observable['equalityComparer']) || !observable['equalityComparer'](_latestValue, arguments[0])) {
            observable.valueWillMutate();
            _latestValue = arguments[0];
            if (DEBUG) observable._latestValue = _latestValue;
            observable.valueHasMutated();            
        }
        return this; // Permits chained assignments        
   }        
   else {
        // Read
        ko.dependencyDetection.registerDependency(observable); // The caller only needs to be notified of changes if they did a "read" operation
        return _latestValue;       
   }
}

如何使这在IE7中正常工作?

你能分享你的代码或者 jsFiddle 吗? - RP Niemeyer
你在这里发布的代码看起来像是 knockout js 代码... 你确定这是你的代码引发了错误吗? - Ravi Y
1个回答

2

IE浏览器不支持数组的indexOf方法,这会导致在使用knockout.js框架时出现问题。

添加以下javascript代码可能解决您的问题:

    //
    // IE browsers do not support indexOf method for an Array. Hence 
    // we add it below after performing the check on the existence of
    // the same.
    //
    if (!Array.prototype.indexOf)
    {
        Array.prototype.indexOf = function (obj, start)
        {
            for (var i = (start || 0), j = this.length; i < j; i++)
            {
                if (this[i] === obj)
                {
                    return i;
                }
            }
            return -1;
        };
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接