angular.js - Selepas AngularJS menggunakan arahan pengesahan borang tersuai, kandungan input tidak diserahkan?
phpcn_u1582
phpcn_u1582 2017-05-15 16:57:43
0
1
572

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_u1582
phpcn_u1582

membalas semua(1)
过去多啦不再A梦

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 . 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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan