5

Wenn ich mein Programm in Mozilla ausführe, löst es die Knockout-Ausdrücke auf und zeigt die Werte im beobachtbaren Array an. Wenn ich das gleiche in IE7 mache, zeigt es Knockout-Code.knockout evaluiert keine Ausdrücke in IE7

Mozilla Ergebnisse

value 1 
value 2 
value 3 

IE7

Ergebnisse
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;  
    } 
} 

Wie kann ich diese Arbeit richtig in IE7 machen?

+0

können Sie Ihren Code oder einen jsFiddle teilen? –

+0

Was Sie hier gepostet haben, scheint der Knockout-JS-Code zu sein ... Sind Sie sicher, dass Ihr Code einen Fehler verursacht? – ryadavilli

Antwort

2

IE-Browser unterstützen indexOf für ein Array nicht, was zu einem Problem mit dem Framework knockout.js führt.

die unten stehende Javascript hinzufügen, könnte es Ihr Problem beheben:

// 
    // 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; 
     }; 
    } 
+0

Alle Updates dazu. – Rups