ng-init不能与ng-if一起使用

时间:2016-11-04 07:57:16

标签: angularjs angular-directive angular-filters

我有一个div

<div class="error-text" ng-if="customerIdLength > customerIdMaxLength" ng-init="error='yes'" >Error presented</div>

此处ng-if正常运作。

但是

基于ng-init值,我禁用了这样的按钮:

<button class="btn btn-success" type="submit" ng-click="submitNumber();" ng-disabled="error=='yes'">Submit</button>

这不起作用。 如果我将此ng-init放到其他没有ng-if的元素上,那么它正常运行。那背后的原因是什么?

3 个答案:

答案 0 :(得分:1)

&#13;
&#13;
<!DOCTYPE html>
<html data-ng-app="myApp">

<head>
 
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script>
 
</head>

<body data-ng-controller="testController">

  <div class="error-text" ng-init="$parent.error='yes'" ng-if="1 > 0">Error presented</div>

  <button class="btn btn-success" type="submit" ng-click="submitNumber();" ng-disabled="error=='yes'">Submit</button>

  <script>
    // Code goes here

    angular
      .module('myApp', [])

    .controller('testController', ['$scope',
      function($scope) {

      }
    ])
  </script>

</body>

</html>
&#13;
&#13;
&#13;

你需要使用$ parent来获取ng-if中的内部范围。

答案 1 :(得分:0)

ng-ifng-show之间的区别在于ng-if实际上从DOM中删除了附加到它的html元素,导致您的ng-init表达式无法执行。

只需用ng-show替换它就可以了解

<div class="error-text" ng-show="customerIdLength" ng-init="error='yes'">Error presented</div>

答案 2 :(得分:0)

我认为逻辑是合理的,但它可能缺少一些angularjs设置和配置,如标记中的ng-app和ng-controller声明。

确保在顶部

声明
<div ng-app="github" ng-controller="githubRepos">
<!-- Your code -->
</div>

Solution