我的敲除模型验证存在以下问题,但不确定如何解决它们。以下是我的模型,首先是验证规则:
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)另外,如果我想将一个可观察量限制为整数,我该怎么办呢?
3)当我使用条件定义规则时(即Username()),如何为其定义自定义消息?我能够为默认规则执行此操作,但使用条件规则,它无法正常工作
4)我有两个可观察数组WeeklyData1和WeeklyData2,它们都包含Data()对象。我想为这两个规定单独的最小/最大规则,例如,Minly / max - 对于WeeklyData1为1,7,对于WeeklyData2为min / max - 1,150。我怎么能完成它?
4)现在我的错误消息显示在数据字段的旁边,但我希望所有这些消息都出现在单个验证摘要中,同时在字段上显示“*”。我被告知要使用Validation-bindings,但我不确定如何使用它,有人可以举个例子吗?
我知道这是很多问题,但如果有人可以提供帮助我会很感激。
提前致谢
答案 0 :(得分:0)
我没有在你的代码中潜水,而是为你的问题创建了一个小型的小型演示。好的,我们走了,
1)ID()可观察,我想将它限制为两个小数点......和2)另外,如果我想将一个observable限制为整数....
你的1和2问题非常相似,所以我在一个小提琴中覆盖了这两个问题。 Check this fiddle。
3)当我使用条件(即Username())定义规则时,如何定义自定义消息....
您可以使用message
属性设置自定义消息Check this fiddle。
4)我有两个可观察数组WeeklyData1和WeeklyData2,它们都包含Data()对象
我不清楚这个问题是什么,这些数组包含哪种类型的数据以及你想要设置的最小/最大规则(数组长度或其他)。所以请清楚这一点,我会尽力帮助解决这个问题。
5)现在我的错误消息显示在数据字段旁边.....
我已经在您的how to? with knockout js validations问题(检查更新)中给出了这个问题。
让我知道它是否有帮助!