2012-01-31 38 views
33

Ai đó có thể cho tôi biết điều gì sai với điều này http://jsfiddle.net/Yp8Bz/? Nó hoạt động tốt trong Chrome/Firefox, nhưng trong IE 8 tôi nhận được lỗi sau:Knockout JS 2.0 Lỗi Phân tích Ràng buộc trong 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 

Trả lời

66

Đặt class trong dấu ngoặc kép. Tôi chạy vào cùng một vấn đề khi sử dụng một từ dành riêng.

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

Cảm ơn bạn, điều này được lưu trong ngày của tôi! – bouke

+9

Điều này cũng áp dụng cho 'if'. Trong trường hợp ai tìm thấy trang này với cùng một vấn đề tôi có. –

+0

@RichardDalton: ý của bạn là gì nếu áp dụng? Ví dụ: nếu PropertyName == 1 && SubCollection.length? nên là gì nếu 'PropertyName'? và cho SubCollection.length? Hỏi vì tôi chỉ có một số vấn đề với knockout 2.3.0 với IE8. Số nhận dạng dự kiến, chuỗi hoặc dòng số 2000 Tôi đặt tất cả các thuộc tính của tôi trong dấu ngoặc kép trong if. Cùng một crap (tôi thực sự ghét IE): ( – firepol

4

Daniel A. White đã chỉ ra vấn đề cụ thể của bạn, nhưng nếu bạn đã được làm việc với các lớp CSS một cách thường xuyên, tôi sẽ khuyên bạn sử dụng các css ràng buộc.

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> 
Các vấn đề liên quan