0

こんにちは、一連のプロパティを含む関数オブジェクトを作成しました。これは私が持っているものです:

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;
    });
}

私が望むのは、各プロパティを反復処理して、毎回すべてのプロパティを書き込まずに有効かどうかを確認する方法を見つけることです。

さらに、約 30 ~ 35 個のプロパティを持つ LoginModelDTO と同様のオブジェクトを作成する必要があります。これにより、コードが大量になり、JavaScript ファイルが大きくなります。

プロパティをスローして有効かどうかを確認するだけで反復できる方法はありますか? isValid はスキップする必要があります

4

3 に答える 3

1

WELL for..inステートメントは次のことに役立ちます。

var obj = {

pro1:"hello",

pro2:function(){
//code here
},
etc:function(){

}//...
}

for(var property in obj)
{
if(obj.hasOwnProperty(property))
{
console.log(property)//display the name of the property and of course the access
}
}

プロパティの値にアクセスするには、次のようにします。

for(var property in obj)
{
if(obj.hasOwnProperty(property))
{
console.log(obj[property])//display the value of the property(in case that you need it)
}
}
于 2013-06-18T16:02:27.487 に答える
1

eis はコメントでその一部を提供し、Misters は回答で一部を提供しましたが、ここにすべてをまとめます。

var allValidatablesAreValid = true;
for (var property in self)
{
    if (self.hasOwnProperty(property) && self[property]["isValid"]) {
        allValidatablesAreValid = allValidatablesAreValid && self[property].isValid();
    }
    // You can add an early bail out here:
    // if (!allValidatablesAreValid) { break; }
}
于 2013-06-18T16:19:55.820 に答える