角度ng模型控制器的工作正确属性,但元素不正确

时间:2015-09-01 13:57:06

标签: javascript angularjs angularjs-directive

我有这个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);
                });
            }
        }
    });

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

1 个答案:

答案 0 :(得分:1)

您无法从输入标记中删除指令属性,取消注释该指令元素并假装该指令将在附加到输入标记时起作用。

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

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