ng-required指令angular js的问题

时间:2014-02-22 00:47:38

标签: angularjs angularjs-directive

我希望根据条件要求输入。

      <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
          };
      });

由于

1 个答案:

答案 0 :(得分:3)

我无法解释为什么$scope.required在这种情况下会成立(也许你将它设置为true在其他地方并且应该使用子或隔离范围?)...我会根据您提供的内容,预计它为undefined。另一种可能性是,您在同一范围内有多个带有此指令的元素,其中一个元素将所有值设置为true。

将您的$scope.required = $attrs.required;行替换为

$attrs.$observe('required', function(value) {
    $scope.required = value;
});

它应该正确地获取required属性的值(以及它何时发生变化!)。

如果您将该指令应用于同一范围内的多个元素,则应使用子范围。您需要做的就是将scope: true添加到指令返回的对象中。

如果这不起作用,请发布更多应用程序代码。