2013-03-02 25 views
7

Tôi nhận được một văn bản phong cách lạ với mã này:Knockout ràng buộc css render => class =" 0 1 2 3 4 5 6 với KO 2.0

self.styleClass = ko.computed(function() { 
      return self.isFollowing() ? "button" : "secondary button"; 
     }); 

     <button data-bind="text: followButtonText,click: toggleIsFollowing, css: styleClass"></button> 

nó ám:

<button data-bind="text: followButtonText,click: toggleIsFollowing, css: styleClass" class=" 0 1 2 3 4 5 6 7 8 9 10 11 12">Unfollow</button> 

model.styleClass() hiển thị tốt trong giao diện điều khiển

+0

Tôi không thể repro vấn đề của bạn: http://jsfiddle.net/s86Nb/1/mã của bạn sẽ hoạt động tốt. Bạn đang sử dụng trình duyệt nào và phiên bản KO nào? – nemesv

+0

@nemesv knockout-2.0.0.debug.js chrome và FF – FutuToad

Trả lời

11

Ngữ nghĩa của liên kết css đã được thay đổi từ KO 2.1.0 thành KO 2.2.0

Từ Knockout 2.2.0 released:

Chúng tôi cũng đã thực hiện một số tính năng làm việc nhiều như bạn có thể luôn luôn có nghĩ rằng họ nên làm việc. Ví dụ: liên kết css giờ đây có thể đính kèm tên lớp CSS được tạo theo chương trình cho các phần tử (trước đây, nó bị giới hạn để chuyển đổi tên lớp CSS được xác định trước).

Vì vậy hãy nâng cấp lên KO 2.2.1 và nó sẽ hoạt động tốt.

Nếu bạn không thể nâng cấp bạn có thể sử dụng attr ràng buộc như một cách giải quyết:

<button data-bind="text: followButtonText, 
        click: toggleIsFollowing, 
        attr:{ class: styleClass}" /> 

Demo JSFiddle using KO 2.0.0 and attr binding

+0

bạn đời lớp 1 !! – FutuToad

+3

Chỉ cần một đầu - một số phiên bản của IE không thích 'lớp' như một tên thuộc tính. Tôi muốn khuyên bạn nên gói nó trong dấu ngoặc kép (''class': styleClass'') để IE sẽ không bị nghẹt thở. –

Các vấn đề liên quan