Recibo el siguiente error en IE8 cuando intento vincular datos con una etiqueta <input>:

No se pueden analizar los enlaces.

Mensaje: [Error de objeto];

Valor de enlaces: enable: $ root.hasTag ('foo')

Esencialmente, tengo un enlace de datos habilitado en una casilla de verificación que debería deshabilitar la casilla de verificación si no hay modelos con una etiqueta específica.

<input type="checkbox" data-bind="enable: $root.hasTag('foo')" value="foo" 
    class="filtercheck" />

El modelo de vista tiene el siguiente método para recorrer todos los modelos y resumir los modelos con una etiqueta coincidente, si el valor es mayor que 0, devuelve verdadero.

self.hasTag = function(tag) {
    var sum = 0;
    var item;
    for (var i=0; i<this.items().length; i++) {
        item = this.items()[i];
        if (item.tags().indexOf(tag) != -1) {
            sum++;
        } else {
            continue;
        }        
    }
    return (sum > 0) ? true : false;
};

¿Por qué este enlace de datos arroja un error solo en IE8?

0
John Giotta 30 mar. 2012 a las 01:45

1 respuesta

La mejor respuesta

Creo que es porque indexOf no está definido en IE8. Hice una prueba rápida y devuelve indefinido. Deberá proporcionar su propia versión.

Espero que esto ayude.

2
madcapnmckay 30 mar. 2012 a las 03:54
Puede que tengas razón, lo intentaré. Probablemente necesitaría usar knockoutjs observableArray.indexOf
 – 
John Giotta
30 mar. 2012 a las 04:08
Sí, esa es una opción. También puede usar ko.utils.arrayIndexOf en matrices no observables.
 – 
madcapnmckay
30 mar. 2012 a las 04:17