我有一个非常简单的 Angular 应用程序设置,代码如下:
索引.html
<!DOCTYPE html>
<html>
<head>
<script src='https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js'></script>
<script src='app.js'></script>
</head>
<body ng-app="app">
<div ng-controller="MyCtrl">
<div ng-show="ready()">
Some content
</div>
</div>
</body>
</html>
和app.js
var app = angular.module('app', []);
app.controller('MyCtrl', function($scope) {
console.log("MyCtrl called")
$scope.ready = function() {
console.log("ready called");
return true;
}
})
如果你在控制台打开的情况下运行它,你会看到MyCtrl 调用了一次,ready 调用了两次。我花了几个小时试图弄清楚这一点,我看不出有什么理由$scope.ready
只被称为一次。
如果您使用 Angular v1.1.5 并使用ng-if
而不是ng-show
您将具有相同的行为,但如果您ng-init
正确使用它会调用$scope.ready
一次。就我而言,我将需要ng-show
or ng-if
。
Plunkr:http ://plnkr.co/edit/ZSwVNLeFSuhbouXZu9SM?p=preview
澄清:
为了详细说明我的目标,假设$scope.ready
稍后返回false
(也许它会进行 AJAX 调用,不应多次调用),我希望“某些内容”不再可见。即,基于 的结果的动态行为$scope.ready
。
有任何想法吗?感谢您的帮助!