- 我創建了綁定到kendo MVVM的輸入元素的變量列表。
- 我有一個kendo驗證運行在我所有的輸入元素上(這是標準功能),檢查輸入是否爲空。
在我的MVVM的對象有一個屬性IsMandatory,就像這樣:使用kendo綁定基於變量值設置標籤屬性
{ Name: "test", ID: 12, ... , IsMandatory: false }
驗證不能嘗試驗證與假的IsMandatory值的元素。我怎樣才能做到這一點?
我知道可以結合屬性MVVM這樣的值:
<input data-bind="attr: { name: Name }" />
這導致實際的輸出這樣的對象上方:
<input name="test" />
然而,required
用於標準需求驗證的屬性是無價值的,就像這樣。
<input name="test" required />
所以基本上我需要的,如果在我的MVVM對象的IsMandatory屬性設置爲true,並沒有按規定的屬性,如果它被設置爲false,以創建具有所需屬性的元素。
{ Name: "test1", ID: 1, ... , IsMandatory: true }
{ Name: "test2", ID: 2, ... , IsMandatory: false }
{ Name: "test3", ID: 3, ... , IsMandatory: true }
<input name="test1" required />
<input name="test2" />
<input name="test3" required />
有沒有一個優雅的解決方案來解決這個問題?除了在每個元素的創建周圍添加if-else。或者在我的驗證中有排除/包含元素的不同解決方案?
我可以想象的一個選擇是創建一個自定義的必需驗證,檢查輸入的IsMandatory屬性是否設置爲true,然後才驗證該元素。但是,我無法找到任何可能性來獲取當前元素的MVVM對象。
...
validation: {
required: function (input) {
var observable = // Get the kendo observable from input here !!!!!
if (observable.IsMandatory) {
return input.val() != "";
}
return true;
}
},
...
此設置所需的屬性要求= 「必需的」。 但是,閱讀有關沒有價值的屬性我已經意識到,如果你設置一個值,並且此值看起來是什麼並不重要。所以,你的答案確實解決了我的問題。非常感謝。 – 2013-04-11 11:53:46
我意識到這隻適用於某些輸入。當我嘗試將此綁定應用於kendo組合框時,我收到以下消息: 「ComboBox小部件不支持所需的綁定」 – 2013-04-11 14:56:07
是的,此活頁夾僅適用於HTML元素,而不適用於小部件。您也可以使它適用於小部件 - 請檢查我在答案中提供的文檔鏈接。 – 2013-04-11 15:42:38