2012-01-31 8 views
33

¿Puede alguien decirme qué pasa con este http://jsfiddle.net/Yp8Bz/? Funciona bien en Chrome/Firefox, pero en IE 8 me sale el siguiente error:Knockout JS 2.0 Binding Parse Error en IE

Message: Unable to parse bindings. 
Message: SyntaxError: Expected identifier, string or number; 
Bindings value: click: blah, attr: {class: 'Hi'} 
Line: 38 
Char: 359 
Code: 0 
URI: http://cdnjs.cloudflare.com/ajax/libs/knockout/2.0.0/knockout-min.js 

Respuesta

66

Deja class entre comillas. Me encontré con el mismo problema cuando uso una palabra reservada.

attr: {'class': 'Hi'} 
+5

Gracias, esto me salvó el día! – bouke

+9

Esto también se aplica a 'if'. En caso de que alguien encuentre esta página con el mismo problema que yo tuve. –

+0

@RichardDalton: ¿qué quiere decir que se aplica a si? E.g .: si PropertyName == 1 && SubCollection.length? debería ser si 'PropertyName'? y para SubCollection.length? Preguntar porque tengo algunos problemas con el knockout 2.3.0 con IE8. Identificador esperado, cadena o línea numérica 2000 Puse todas mis propiedades entre comillas en el if también. La misma mierda (realmente odio IE) :( – firepol

4

Daniel A. White ya ha señalado su problema específico, pero si tuviera que estar trabajando con clases CSS de forma regular, yo recomendaría usar el css vinculante.

http://knockoutjs.com/documentation/css-binding.html

<div data-bind="css: { profitWarning: currentProfit() < 0 }"> 
    Profit Information 
</div> 

<script type="text/javascript"> 
    var viewModel = { 
     currentProfit: ko.observable(150000) // Positive value, so initially we don't apply the "profitWarning" class 
    }; 
    viewModel.currentProfit(-50); // Causes the "profitWarning" class to be applied 
</script> 
Cuestiones relacionadas