我希望根据条件要求输入。
<input type="text" custom-directive ng-required="isRequired" />
我已将属性isRequired定义为布尔值false。根据isRequired属性,所需功能正常工作。但在自定义指令中,我将$ attrs.required视为所有场景的真实情况。
module.directive('customDirective', function () {
var link = function ($scope, $el, $attrs, $controllers) {
$scope.required = $attrs.required;
}
return {
restrict: 'A',
link: link
};
});
由于
答案 0 :(得分:3)
我无法解释为什么$scope.required
在这种情况下会成立(也许你将它设置为true
在其他地方并且应该使用子或隔离范围?)...我会根据您提供的内容,预计它为undefined
。另一种可能性是,您在同一范围内有多个带有此指令的元素,其中一个元素将所有值设置为true。
将您的$scope.required = $attrs.required;
行替换为
$attrs.$observe('required', function(value) {
$scope.required = value;
});
它应该正确地获取required
属性的值(以及它何时发生变化!)。
如果您将该指令应用于同一范围内的多个元素,则应使用子范围。您需要做的就是将scope: true
添加到指令返回的对象中。
如果这不起作用,请发布更多应用程序代码。