Angular的ng-model控制器对属性是正确的,但对元素却不行

Angular ng-model controller work correct for attribute but for element dont

本文关键字:元素 控制器 ng-model 属性 Angular      更新时间:2023-09-26

我有这样的HTML代码:

        <div ng-repeat="(name, input) in loginCtrl.loginModel">
        <input type="{{input.type}}" name="{{name}}" ng-model="input.model" placeholder="{{name | translate}}" ng-minlength="5" input-status required/>
       <!-- <input-status ng-model="input.model"></input-status> -->
    </div>

输入状态代码如下:

        .directive('inputStatus', function() {
        return {
            restrict: 'AE',
            templateUrl: 'templates/inputStatus2.html',
            require: 'ngModel',
            link: function($scope, element, attrs, ctrl) {
                ctrl.$parsers.push(function(viewVal) {
                    ctrl.$validate();
                    console.log(viewVal);
                });
            }
        }
    });

当我在link函数中添加模型控制器的属性代码时,每次模型更改都会执行link函数,但当我删除该属性并取消注释代码时,每次更改input.model后都不会执行模型控制器解析器函数。为什么?如何解决这个问题?

你不能从input标签中删除directive属性,取消对directive元素的注释,并假装该指令会像附加在input标签上一样工作。

当你处理指令作为属性时,你已经有了你需要的html:它是标签本身,在你的例子中的输入标签。

使用directive作为元素,你必须创建要在视图中呈现的元素,附加一个模板,该模板将有一个主HTML节点:一个根元素,在本例中是一个输入标签。