我喜欢在指令中观察输入元素的有效性。我的控制器总是undefined
。如何在输入元素上观看$valid
,$invalid
等属性?
app.directive("myElement", function()
{
return {
restrict: "A",
templateUrl: "./Templates/tooltip.html",
scope: {
},
compile: function (element, attrs) {
return {
pre: function preLink(scope, element, attrs, controller) {
},
post: function postLink(scope, element, attrs, controller) {
scope.$watch(function(){return controller.$invalid;},function(newVal,oldVal){
});
}
}
}
}
答案 0 :(得分:1)
要使(前,后, - )链接函数的controller
参数起作用,您必须要求一个或多个控制器:
return {
require: "ngModel",
...
};
或更多:
return {
require: ["ngModel", "foo", "bar"],
...
};
这不会解决你的问题;您需要在指令中定义控制器,并确保模板的根元素是命名表单。所以你可以这样做:
模板:
<form name="theForm">
<input name="myInput" ng-model="foo.name" />
</form>
指令:
return {
controller: function($scope) {
$scope.watch("theForm.myInput.$valid", function(isValid) {
...
});
},
...
};