2013-01-07 40 views
2

請參閱以下jsFiddle鏈接:http://jsfiddle.net/7gS6N/Knockout JS:屬性特定的CSS綁定表達式

我試圖通過敲除js執行一些簡單的字段級驗證。

單擊「添加錯誤」模擬爲名稱字段添加錯誤。

向Errors集合中添加錯誤時,css綁定會觸發,表達式的計算結果爲true,並應用css類。

這很好,但我怎樣才能使我的css綁定表達式屬性特定?

css: { error: Errors().length > 0 } 

我只想讓Name字段顯示css類。

謝謝!

+0

你有沒有考慮過使用Knockoutjs驗證插件?它做你正在尋找https://github.com/ericmbarnard/Knockout-Validation – 2013-01-07 22:01:15

回答

1

你需要一個額外的可觀的,所以不是

self.Name = ko.observable("John") 

您使用

self.Name = new Field("John Smith"); 

其中一個字段具有以下結構

function Field(value) { 
    var self = this; 
    self.value = ko.observable(value); 
    self.hasError = ko.observable(false); 
} 

而且您的標記看起來像

<div data-bind="with:Name"> 
    <input type="text" data-bind="value: value, css: { error: hasError }" /> 
</div> 

這種策略被稱爲裝潢一個對象;在這種情況下,我將你的變量「包裝」在一個類中,但是從那裏你可以添加label,errorMessage以及其他您希望所有這些特定字段具有的屬性。最後,我用工作示例更新了你的小提琴here