2013-04-02 156 views
0

我對我的基因敲除模型驗證存在以下問題,不確定如何解決它們。以下是我的模型首先與驗證規則:基因敲除驗證問題

var Data = function (data) { 
this.Val = data; 
} 

function ViewModel(item) { 
var parse = JSON.parse(item.d); 
var self = this; 
this.Name = ko.observable(parse.Name); 
this.UserType = ko.observable(parse.UserType); 
this.ID = ko.observable(parse.ID).extend({ required: { params: true, message: "ID is required" }, decimal: { params: 2, message: "Should be decimal"} }); 
this.Username = ko.observable(parsed.Username).extend({ required: { 
     onlyIf: function() { 
      return self.UserType() > 1; 
     } 
    } 
}); 

this.WeeklyData = ko.observableArray([]); 
var records = $.map(parse.WeeklyData, function (data) { return new Data(data) }); 
this.WeeklyData(records); 
this.WeeklyData2 = ko.observableArray([]); 
var records = $.map(parse.WeeklyData2, function (data) { return new Data(data) }); 
this.WeeklyData2(records); 
} 

ko.extenders.numeric = function (target, precision) { 
var result = ko.dependentObservable({ 
    read: function() { 
     return target().toFixed(precision); 
    }, 
    write: target 
}); 

result.raw = target; 
return result; 
}; 

這裏是我的問題:

1)用ID()可觀察到的,我希望把它限制在兩個小數點,所以我已經創建了驗證擴展器'numeric',但它不起作用。我如何使用它以及如何糾正它有什麼問題?

2)另外,如果我想限制一個observable爲整數,我該怎麼做?

3)當我用一個條件(即用戶名())定義規則時,如何爲此定義一條自定義消息?我能夠做它的默認規則,但有條件的規則,它不起作用

4)我有兩個可觀察數組WeeklyData1和WeeklyData2都包含Data()對象。我想爲這兩個分開最小/最大規則,例如,WeeklyData1的min/max - 1,7和WeeklyData2的min/max - 1,150。我怎樣才能完成它?

4)現在我的錯誤消息顯示在數據字段的旁邊,但我希望所有這些出現在單個驗證摘要中,同時在字段中顯示'*'。我被告知要使用Validation-bindings,但我不確定如何使用它,有人請舉個例子嗎?

我知道很多問題,但是我很感謝有人能幫忙。

在此先感謝

回答

0

而不是在你的代碼跳水我創建了一個小小規模示威回答大家的提問。好吧所以我們走,

1)與ID()observable,我想限制它的兩個小數點....和2)此外,如果我想限制一個observable整數。 ...

你的1和2問題非常相似,所以我在一個小提琴中涵蓋了這兩個。 Check this fiddle

3)當我定義的規則與條件(即用戶名()),我該如何定義自定義消息....

可以使用message屬性來設置自定義消息,Check this fiddle

4)我有兩個可觀察陣列WeeklyData1和WeeklyData2兩者均包含數據()對象

我不清楚此問題,什麼數據類型這兩個陣列的包含和用於什麼你想設置最小/最大規則(數組長度或其他)。所以請清楚這一點,比我會試圖幫助。

5)現在我的錯誤信息出現在數據字段旁邊.....

這個問題的答案我已經在你的how to? with knockout js validations問題中給出(檢查更新)。

讓我知道它是否有幫助!

+0

re:4)兩個可觀測量都包含數字數據。說WeeklyData1 containts 21,45,54,19(最小/最大值應該是15/60)。 WeeklyData2包含no.of天,所以最小/最大值應爲0/7。這裏min/max不是數組長度,而是每個元素的邊界。 – devC

+0

感謝您的答覆堆。他們很好地工作。請回答我的第四個問題。 – devC

+0

您可以創建一個解決您的問題,4自定義的驗證規則,看看這個https://github.com/ericmbarnard/Knockout-Validation#custom-validation-rules – gaurav