1

my-minlength属性が文字列 (null ではない) であるかどうか、およびそうであるかどうかをチェックする非常に単純なディレクティブを作成しようとしています。ng-minlength属性を入力要素に追加します。これは機能するはずですが、機能していません。

私の指令

var app = angular.module("fooApplication", [])

app.directive('myMinlength', function() {
    return {
        link: function(scope, element, attrs) {
            if(element == "") {
                attrs.$set('ng-minlength', attrs.myMinlength);
            }
        },
    }
});

私のHTML

<input type="text" name="foo" my-minlength="5" required/>

可能性のあるエラーから完全に取り除かれた提案を編集します - それでも機能しません。

.directive('myMinlength', ['$compile', function($compile) {
    return {
        link: function(scope, element, attrs) {
           if(true) {
                attrs.$set('ng-minlength', "5");
                $compile(element)(scope);
            }
        },
    }
}]);
4

3 に答える 3

4

より簡単なアプローチを使用できます。

<input type="text" name="foo" ng-minlength="myvar || 0" required/>

scope.myvar が未定義の場合、minlength は 0 になります

于 2014-07-07T12:47:32.600 に答える
3

ng-minlength 属性をディレクティブに追加するには、ディレクティブを再コンパイルする必要があります。これを試して :

.directive('myMinlength', ['$compile', function($compile) {
                return {
                    link: function(scope, element, attrs) {
                       if(element == "") {
                            attrs.$set('ng-minlength', attrs.myMinlength);
                            $compile(element)(scope);
                        }
                    },
                }
            }]);
于 2014-07-07T12:38:15.647 に答える