Javascript AngularJS监视输入有效性指令
我喜欢观察指令中输入元素的有效性。我的控制器总是Javascript AngularJS监视输入有效性指令,javascript,angularjs,Javascript,Angularjs,我喜欢观察指令中输入元素的有效性。我的控制器总是未定义。如何查看输入元素上的属性,如$valid,$invalid app.directive("myElement", function() { return { restrict: "A", templateUrl: "./Templates/tooltip.html", scope: { }, compile: function (element, att
未定义
。如何查看输入元素上的属性,如$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){
});
}
}
}
}
要使(pre-、post-、-)链接函数的
controller
参数正常工作,您必须需要一个或多个控制器:
return {
require: "ngModel",
...
};
或更多:
return {
require: ["ngModel", "foo", "bar"],
...
};
但这并不能解决你的问题;您需要在指令中定义控制器,并确保模板的根元素是命名表单。因此,您可以:
模板:
<form name="theForm">
<input name="myInput" ng-model="foo.name" />
</form>
我喜欢避免使用表格。需要一个没有它的解决方案。请尝试将答案的
{require:“ngModel”}
部分添加到代码中,但请确保模板是
,否则它无法工作。在链接函数中保留相同的代码。如何确保模板是。。。只需离开templateUrl?如果没有模板
/templateUrl
,请确保您将仅在具有ng型号
的元素上使用指令。如果不是,Angular将抛出错误(未找到必需的控制器),因此它是安全的。controller。$invalid仅在控制器为FormController时有效
return {
controller: function($scope) {
$scope.watch("theForm.myInput.$valid", function(isValid) {
...
});
},
...
};