我有一个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
的元素上,那么它正常运行。那背后的原因是什么?
答案 0 :(得分:1)
<!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;
你需要使用$ parent来获取ng-if中的内部范围。
答案 1 :(得分:0)
ng-if和ng-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>