cari

Rumah  >  Soal Jawab  >  teks badan

angular.js - Selepas AngularJS menggunakan arahan pengesahan borang tersuai, kandungan input tidak diserahkan?

Kod arahan adalah seperti berikut:

 var regex = /[\u4e00-\u9fa5\u3400-\u4db5\ue000-\uf8ff]/;
    app.directive("ifHanzi", function () {
        return {
            restrict: "A",
            scope:true,
            require: "ngModel",
            link: function (scope, ele, attrs, ngModelController) {
                ngModelController.$parsers.unshift(function (input) {
                    if (regex.test(input)) {
                        ngModelController.$setValidity('ifHanzi', true);
                    } else {
                        ngModelController.$setValidity('ifHanzi', false);
                    }
                });
            }
        }
    });

Kod html adalah seperti berikut:

<form name="iForm" ng-submit="Search(Input)">
    <p class="input-group">
        <input type="text" class="form-control" ng-model="Input" name="inputText" if-hanzi>
        <button class="btn btn-primary" type="submit>查询</button>                        
    </p>
    <span ng-show="iForm.inputText.$error.ifHanzi">提示:只能输入汉字进行查询!</span>
</form>

Kod pengawal:

app.controller('testCtrl',['$scope',function($scope){
    $scope.Search=function(Input){
        console.log(Input);//使用了表单验证指令后,Input就成了undefined
    }
}]);

Pengesahan boleh dilaksanakan seperti biasa, iaitu, selagi saya menambah arahan "ifHanzi" yang ditulis oleh saya sendiri, kandungan borang yang dihantar tidak boleh diperolehi dalam pengawal dan menjadi tidak ditentukan Adakah arahan saya ditulis salah atau tidak ada yang lain? Jika saya tidak perasan apa-apa, saya harap pelajar boleh memberi saya beberapa petunjuk.

phpcn_u1582phpcn_u15822844 hari yang lalu613

membalas semua(1)saya akan balas

  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-15 16:59:43

    Hanya keluarkan skop = benar dalam arahan Anda menggunakan skop bebas Asrama terputus, jadi anda perlu menggunakan telefon bimbit anda...


    Dikemas kini: 2015-12-13

    1. Pertama sekali, kerana apa yang anda require adalah arahan, iaitu, ngModel, dan arahan ini tidak mempunyai skop pengasingan, jika anda menetapkan scope = true, ia akan menyebabkan dalaman ngModel tidak dapat mengemas kini luaran < Nilai sepadan 🎜>. ngModelIni adalah perkara utama yang membawa kepada masalah di atas. Jadi hanya alih keluar pilihan konfigurasi ini. 2. Kaedah fungsi yang anda hantar ke
    tidak mengembalikan hasil selepas mengesahkan ngModel.$parsers, yang mengakibatkan nilai pada paparan tidak dihantar kepada model. Ia boleh diubah seperti berikut: ifHanzi

        if (regex.test(input)) {
            ngModelController.$setValidity('ifHanzi', true);
            return input; /* return the input */ 
        } else {
            ngModelController.$setValidity('ifHanzi', false);
        }

    Ini adalah punca kedua masalah.

    Semoga ini membantu.

    balas
    0
  • Batalbalas