我有这个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后都不会执行模型控制器解析器函数。为什么?如何解决这个问题?
答案 0 :(得分:1)
您无法从输入标记中删除指令属性,取消注释该指令元素并假装该指令将在附加到输入标记时起作用。
当你将指令作为属性处理时,你已经拥有了你需要的html:它是标签本身,你的例子中的输入标签。
使用directive作为元素,您必须创建要在视图中呈现的元素,该模板将附加一个具有一个主HTML节点的模板:根元素,在本例中为输入标记。