2013-04-17 34 views
5

Tôi có một mảng quan sát được của các đối tượngtùy chọn Knockout có điều kiện css

question = { 
     ownerUserName: item.id, 
     text: item.text, 
     dataType: item.dataType, 
     personalized: item.personalized, 
     status: item.status, 
     actionUserName: item.actionUserName 
    } 

Và một lựa chọn với các tùy chọn từ mảng này:

<select id="questId" style="width: 425px" data-bind="options: questionList, optionsText: 'text'"> 

Làm thế nào với sự giúp đỡ của loại trực tiếp tôi có thể làm để nếu câu hỏi .personalized == "Y" màu của văn bản của câu hỏi này sẽ có màu xanh lục?

Trả lời

4

Tốt nhất là css binding

Một sự thích nghi nhanh chóng của các tài liệu hướng dẫn cho nhu cầu của bạn sẽ được

<div data-bind="text: personalized, css: personalizedStatus"> 
    Profit Information 
</div> 

<script type="text/javascript"> 
    question.personalizedStatus = ko.computed(function() { 
     return this.personalized() == "Y" ? "green" : "red"; 
    }, question); 

</script> 
<style> 
    .green {color:green;} 
    .red{color:red;} 
</style> 
+0

Tôi nên tạo một mô hình câu hỏi? – Skeeve

+0

Thành thật mà nói tôi không chắc chắn. tôi chỉ cố gắng để thích ứng với ví dụ mẫu mã của bạn. Tôi sẽ tạo ra một mô hình câu hỏi chỉ để dễ sử dụng. –

3

Bạn có thể sử dụng foreach thay vì thông thường tùy chọn ràng buộc. Một cái gì đó như

<style> 
    .highlighted{ 
     background-color: red; 
    } 
</style 
<select id="questId" style="width: 425px" data-bind="foreach: questionList"> 
    <option data-bind="text: text, class: {highlighted: personalized == 'Y'}"> 
</select> 
+0

bạn có chắc chắn về mã này: class: {highlight: personalized == 'Y'}, bởi vì nó không hoạt động. attr: {class: "highlight"} sẽ hoạt động, tuy nhiên, nhưng nó không đáp ứng mọi yêu cầu của tôi – Skeeve

+0

@Skeeve Tôi đang sử dụng mã này trong các dự án của riêng mình và nó hoạt động. Điều duy nhất là nếu 'cá nhân hoá' có thể quan sát được, thì bạn nên viết 'personal() ==' Y'' – demkalkov

1

Ngoài ra còn có tùy chọn để thiết lập dữ liệu-ràng buộc = "phong cách: {color: value? 'green': null} "

Đó không phải là lựa chọn tốt nhất (tốt nhất là đặt lớp mới) nhưng có thể

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