【发布时间】:2013-06-14 22:37:52
【问题描述】:
您好,我创建了一个包含一组属性的函数对象。这就是我所拥有的:
function LoginModelDTO(data) {
var self = this;
self.UserName = ko.observable(data.UserName).extend({
minLength: {
params: 25,
message: "Username should have at least 25 chars"
},
required: {
message: "Username is required"
},
maxLength: {
params: 50,
message: "Username should not have more then 50 chars"
},
trackChanges: null
});
self.Password = ko.observable(data.Password).extend({
stringLength: {
params: 25,
},
required: {
message: "Password is required"
},
trackChanges: null
});
self.RememberMe = ko.observable(data.RememberMe).extend({
trackChanges: null
});
self.isValid = ko.computed(function () {
var bool = self.FirstName.isValid() &&
self.Username.isValid() &&
self.Password.isValid() &&
self.RememberMe() &&
return bool;
});
}
我想要的是能够找到一种方法来迭代每个属性并询问它是否有效,而无需每次都编写每个属性,因为我还必须为 hasChanges 、 revertChanges 等编写类似 self.isValid 的结构。
此外,我将需要创建其他与 LoginModelDTO 类似的对象,它们具有大约 30-35 个属性。这将导致需要大量代码和更大的 javascript 文件。
有什么方法可以迭代只抛出属性并检查它们是否有效? isValid 应该被跳过
【问题讨论】:
-
for (propertyName in self) { // check for self[propertyName].isValid() }并跳过您不想检查的那些? -
如果你不想重新发明轮子jqueryvalidation.org
-
我正在使用淘汰赛进行验证,但是由于要求而扩展了它的功能
-
@mcgrailm 你知道,有时更好,所以重新发明轮子。如果你不这样做,你将不知道它是如何工作的,以及如何创建一个你没有的。
标签: javascript knockout.js knockout-validation