我有一個劍道數據網格,如下圖所示:劍道UI data.model.set失敗,定製驗證
$("#Grid").kendoGrid({
save: function (data) {
if (data.values.UnitPrice !== undefined) {
if(data.values.UnitPrice == null || data.values.UnitPrice == 0){
data.model.set("EstimatedItemCost", 0);
}
else{
console.log(data.values.UnitPrice * data.model.Quantity);
var test = data.model.set("EstimatedItemCost", data.values.UnitPrice * data.model.Quantity);
}
}
this.refresh();
},
....//other config
和它使用的數據源有一點自定義驗證
var tdata = new kendo.data.DataSource({
schema: {
model: {
fields: {
UnitPrice: {
type: "number",
validation:{
min: 0,
conditionalRequired: function(input){
if(input.is("[name='UnitPrice']")){
input.attr("data-conditionalRequired-msg", "Unit Price is required");
//Some logic, without changing the result, simply return true
return true;
}
}
},
},
EstimatedItemCost: { type: "number" },
Remarks: { type: "string" }
}
}
},
好吧,現在這裏是對問題的描述:
data.model.set("EstimatedItemCost", data.values.UnitPrice * data.model.Quantity);
沒有設置值EstimatedItemCost
,它仍然是0。
也就是說:console.log(data.values.UnitPrice * data.model.Quantity);
已顯示200的有效數字,但EstimatedItemCost
的值在set()
後仍然爲0。
隨着進一步鑽探,我發現這是由於數據源中存在自定義驗證 conditionalRequired
,我刪除後,一切順利!
但我真的需要驗證邏輯,同時明確地設置模型的值。
誰能告訴我這個問題的原因是什麼,我該如何解決?
任何幫助表示讚賞!謝謝!
EDIT1:
增加一些控制檯日誌,我發現set()
後,自定義驗證函數運行一次! (和失敗),我不知道是什麼再次觸發驗證,但...
謝謝...我在此期間解決它,所以我無法測試它是否正確,但是我認爲這是問題的原因!即:我給你一個接受! :) – shole 2014-09-25 09:05:21