1

私は CakePHP で knockout.js を使用していますが、ノックアウト検証が機能していないようです。私はクロムを使用しており、ノックアウト検証がスクリプトにロードされ、ネットワークタブにも表示されます。また、「インクルード スクリプト」を削除すると、あらゆる種類のエラーが発生するので、インクルードされていることがわかります。

ReserveViewModel というビュー モデルがあります。これは、検証しようとしている入力の例です。エラーは発生しません。何もフラグが立てられません。

ko.validation.configure({
    registerExtenders: true,
    messagesOnModified: true,
    insertMessages: true,
    parseInputAttributes: true,
    messageTemplate: null
});

function ReserveViewModel(){

    var self = this;

    self.firstName = ko.observable("").extend({ required: true })
                .extend({ minLength: 3 })
                .extend({ pattern: {
                    message: 'Please enter your first name',
                    params: '^[a-zA-Z]'
                }});

    //button to continue to another div with more options
    self.continue = function(){
        self.errors = ko.validation.group(self);
        if (self.errors().length == 0) {
            alert('Error found');
        }
    }

}

ko.validation.registerExtenders();

ko.applyBindings(new ReserveViewModel());

「続行」ボタンをクリックしても、firstName 入力が空白の場合でも続行されます。アラートを設定しようとself.errors().lengthしましたが、次のエラーが発生します

function m(){if(0<arguments.length){if("function"===typeof r)r.apply(c,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");return this}l||e();a.q.bb(m);return k}

違いがある場合は、CakePHP を介して AJAX 呼び出しを介してこのコンテンツをロードしています。それは何かに影響しますか?それはある種の閉鎖でしょうか?

編集私はそれを動作させました

jQuery を使用して、必要なすべてのスクリプトを取得することになりました。次に、AJAX を使用して div を設定します。AJAX 経由で取得していたページに、ViewModel ファイルを含めました。

ファイルが異なる時間にロードされるため、奇妙な取り違えだったので、jqueryで順次ロードする必要がありました。

4

0 に答える 0