0

我正在尝试在关系模型-> WebAPI-> 淘汰赛中实现更好的验证。现在我已经创建了我计划更新和使用 IClientValidatable 的数据注释。问题是当前架构不知道这个模型。我有这个:

HTML:

<span>Name</span><input type="text" data-bind="value: validationData.name" />

JS:

    self.validationData = {
            name: ko.observable('').extend(
                {
                    required: true,
                    minLength: 3,
                    pattern: {
                        message: 'validation message',
                        params: '^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$'
                    }
                }),

        };

如您所见,我正在使用 knockout.validation.js,现在我想从代码中删除模式并从一个位置使用它。例如,我想要这个:

self.validationData = {
            name: ko.observable('').validate()
        };

一般来说,是否可以让 Knockout 了解模型中的 DataAnnotations?

4

1 回答 1

0

您可以通过使用 .fn 对象将函数添加到可观察原型

ko.observable.fn.validate = function() {
    return this.extend({
        required: true,
        minLength: 3,
        pattern: {
            message: 'validation message',
            params: '^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$'
        }
    })
};

http://jsfiddle.net/WzLwS/

但是您无法从视图中获取数据属性

编辑:如果您覆盖值绑定处理程序,您可以获得此行为,检查可观察对象是否是可验证的可观察对象,然后从元素中提取数据属性

于 2013-09-27T15:13:10.867 回答