2016-08-08 11 views
0

私は、電子メールの検証で大文字と小文字の区別が問題にならないようにするためのフォームを用意しています。私はmustMatchと呼ばれる角度検証をしています。それは、電子メールがインデックスのインデックスと一致することを確認します。しかし、私も大文字小文字は問題ではないことを確認する必要があります。だから、私はmatchCaseInsensitivityと呼ばれる二次的な機能を作り上げてしまいました。最終的には、これを解決する最良の方法をtolowerCase()フィルタを追加することで決めるため、問題が発生しています。私がこれをしたとき、私は角度付きのmustMatchエラーメッセージ(これは良い)をバイパスすることができましたが、フォーム上でsubmitを押すと、'tolowerCase()' is undefinedのjavascriptの問題に遭遇しました。validatorの関数で、コントローラが 'lowerCase()'で定義されていません

私はこのエラーが発生する理由は、これらがコントローラではなくバリデータファイルに組み込まれているためだと思います。 (それが何でもわからない場合)

私のフロントエンドはこのように見えます。 'match-case-insensitive' => trueマイmustMatchの検証エラーメッセージが

if attr.mustMatch then addValidation 'mustMatch', 'This field must match the previous value.' 

mustMatchエラーメッセージをトリガーする実際の関数である、私もそれがI 'match-case-insensitive'にバンドルされているソリューションのための私のビルド

 %input-md{ type: "email", "ng-model" => "vm.form.email_confirmation", required: true, 'must-match' => 'register_form["vm-form-email"]', 'match-case-insensitive' => true, 'ng-hide' => 'vm.form.validated_email', autocapitalize: 'off' } 
     Confirm email address 

ように注意してくださいフロントエンドを参照してください。これはコントローラではなく、検証ファイル内にもあります。 (それは価値があるもののために....私は分からない)。私はこのTypeError: Cannot read property 'toLowerCase' of undefined at r.$validators.mustMatchを取得し続ける

getMatchValue = -> 
     match = matchGetter($scope) 
     if (angular.isObject(match) and match.hasOwnProperty('$viewValue')) 
     match = match.$viewValue 
     match 

    $scope.$watch getMatchValue, -> 
     ctrl.$$parseAndValidate() 
     return 

    ctrl.$validators.mustMatch = -> 

     match = getMatchValue() 
     if $attrs.matchCaseInsensitive 
     ctrl.$viewValue.toLowerCase() is match.toLowerCase() 
     else 
     ctrl.$viewValue is match 

    return 

(あなたの心は、それはCoffeeScriptのです)。私は2日間以上これに固執しており、それを解決する方法はまったく考えていません。誰かが見て、彼らができることを見ることができれば、本当に感謝しています。

答えて

0

エラーから、ctrl.$viewValueまたはmatch(またはその両方)のいずれかがundefinedであることが明らかです。あなたが期待している動作をその状況にしたいとは思っていませんが、これを実行できる方法が1つあります(JavaScriptでこれを記述します)。

match = getMatchValue() 

if (!(match && ctrl.$viewValue)) { 
    return false 
} 

if ($attrs.matchCaseInsensitive) { 
    return ctrl.$viewValue.toLowerCase() === match.toLowerCase() 
} 

return ctrl.$viewValue === match 
関連する問題