首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ng-init不与ng-if合作。

ng-init不与ng-if合作。
EN

Stack Overflow用户
提问于 2016-11-04 07:57:16
回答 3查看 7.2K关注 0票数 5

我有个div

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

在这里,ng-if工作正常。

基于ng-init值,我将禁用如下按钮:

代码语言:javascript
复制
<button class="btn btn-success" type="submit" ng-click="submitNumber();" ng-disabled="error=='yes'">Submit</button>

这不管用。,如果是,我要把这个ng-init放到没有ng-if的其他元素中,那么它就正常工作了。那么背后的原因是什么呢?

EN

回答 3

Stack Overflow用户

发布于 2016-11-04 08:32:27

代码语言:javascript
复制
<!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>

您需要使用$parent获取ng-if内部的作用域。

票数 1
EN

Stack Overflow用户

发布于 2016-11-04 08:32:06

吴-如果吴-表演的不同之处在于,ng-if实际上从DOM中删除了附加在它上的html元素,导致ng-init表达式不被执行。

简单地用ng-show替换它就可以了

代码语言:javascript
复制
<div class="error-text" ng-show="customerIdLength" ng-init="error='yes'">Error presented</div>
票数 0
EN

Stack Overflow用户

发布于 2016-11-04 08:36:46

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

确保这是在顶部声明的

代码语言:javascript
复制
<div ng-app="github" ng-controller="githubRepos">
<!-- Your code -->
</div>

解决方案

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40417739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档