Cal*_*ass 4 knockout.js knockout-validation
我有以下代码:
function JobTask() {
var self = this;
self.description = ko.observable('').extend({
required: true
});
self.priority = ko.observable('').extend({
number: true,
required: true
});
self.complete = ko.observable(false);
}
function CreateJobViewModel() {
var self = this;
self.task = ko.observable(new JobTask());
self.taskErrors = ko.validation.group(self.task);
self.addTask = function () {
if (self.taskErrors().length) {
console.log(self.taskErrors());
self.taskErrors.showAllMessages();
}
else {
...
}
};
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我添加任务时,即使我正确输入了字段,它也会因某些原因无效.控制台输出[null].经过进一步调查,似乎即使我没有正确输入我的字段,我的taskErrors数组中的第一项始终是[null].所以看起来像:[null], "This field is required.".不知道我做错了什么?
这是我创建的问题的小提琴:http://jsfiddle.net/5kh6h/1/
您的任务属性是可观察的(函数),因此要对其应用验证,您应该使用()传递对象.
self.taskErrors = ko.validation.group(self.task());
Run Code Online (Sandbox Code Playgroud)
当您的对象可观察时,您应该小心.
self.task = ko.observable(new JobTask());
Run Code Online (Sandbox Code Playgroud)
您可以像这样访问他的属性:
console.log(self.task().description);
Run Code Online (Sandbox Code Playgroud)
不是这样的:
console.log(self.task.description);
Run Code Online (Sandbox Code Playgroud)
没有()的任务是一个函数,而不是一个对象.
这是你的工作小提琴:http://jsfiddle.net/mounir/5kh6h/5/
祝好运
| 归档时间: |
|
| 查看次数: |
1062 次 |
| 最近记录: |