2012-01-31 10 views
33

Czy ktoś może mi powiedzieć, co jest nie tak z tym http://jsfiddle.net/Yp8Bz/? To działa dobrze w Chrome/Firefox, ale w IE 8 pojawia się następujący błąd:Knockout JS 2.0 Binding Błąd analizy w 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 

Odpowiedz

66

Put class w cudzysłowach. Podczas korzystania z zarezerwowanego słowa napotkałem ten sam problem.

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

Dziękuję, to zapisany mój dzień! – bouke

+9

Dotyczy to również "jeśli". Jeśli ktokolwiek znajdzie tę stronę z tym samym problemem, który miałem. –

+0

@RichardDalton: co masz na myśli, jeśli dotyczy? Np .: jeśli PropertyName == 1 && SubCollection.length? powinno być, jeśli "PropertyName"? i dla SubCollection.length? Pytam, ponieważ mam problemy z nokautem 2.3.0 z IE8. Oczekiwany identyfikator, ciąg znaków lub linia liczbowa 2000 Umieszczam wszystkie moje właściwości w cudzysłowach również w wyrażeniu "jeśli". Te same bzdury (naprawdę nienawidzę IE) :( – firepol

4

Daniel A. White już wskazał konkretnego problemu, ale jeśli było pracować z klas CSS regularnie, polecam użyciu css wiążące.

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> 
Powiązane problemy