2
 var validationMapping = {

        emailAddress: {
            create: function (options) {
                return ko.observable(options.data).extend({ required: true }).extend({email:true});
            }
        },
        emailAddressConfirm: {
            create: function (options) {
                return ko.observable(options.data).extend({ required: true }).extend({ email: true })
                .extend({equal: emailAddress});}}};

上記は、以下のようにモデルをマッピングするときに使用する検証マッピングです

 $.post('getaccountdata', {},
        function (data) {
            if (data != "") {
                myViewModel = ko.validatedObservable(ko.mapping.fromJS(data, validationMapping));
                ko.applyBindings(myViewModel);
            }
        });

問題は、これが機能していないように見えることです。「equal」検証関数に渡される emailAddress オブジェクトは、ビュー モデルからは監視できないようです。「その他」のオブザーバブルを指定するための正しい構文は何ですか?

4

1 に答える 1

1

数か月後、とにかく;)私が見つけた唯一の方法は、バインディングの後に検証を拡張することです:

...
myViewModel = ko.validatedObservable(ko.mapping.fromJS(data, validationMapping));
ko.applyBindings(myViewModel);
myViewModel().emailAddress.extend({ equal: myViewModel().emailAddressConfirm });
于 2013-06-04T01:25:04.833 に答える