AngularJS - ngRoute - 视图加载完成后的回调

AngularJS - ngRoute - Callback after view-load finished

我尝试用 AngularJS 实现动画对话框。所以我的应用程序启动并显示一个对话框(一切都很好等等),但是该对话框包含不在视口中的图像(因为我用我的 CSS 将它们移出视口)然后应该动画,当对话框打开,内容已加载。

因为我在图像上附加了 class,所以它们不在视口内。在删除 class 的同时,动画进入视口。一切顺利等等。

但是:如何让 AngularJS 在这个对话框打开后让它们动画化?

这是对话框 HTML,为了调试,我添加了 {{closed}} 和超链接:

<div class="dialog bg-turkey" id="mainpage">
<img src="images/mainpage-1.png" id="mainpage-1" ng-class="{unanimated: closed}">
<img src="images/mainpage-2.png" id="mainpage-2" ng-class="{unanimated: closed}">
<img src="images/mainpage-3.png" id="mainpage-3" ng-class="{unanimated: closed}">
<img src="images/mainpage-4.png" id="mainpage-4" ng-class="{unanimated: closed}">

{{closed}}

<a ng-click='animate()'>open</a>
</div>

这是控制器的对话框:

var loadingController = ["$scope", function ($scope) {
$scope.closed = true;

$scope.animate = function () {
    alert('los');
    $scope.closed = false;
};

$scope.$on('$viewContentLoaded', function () {
    setTimeout(
        $scope.animate,
        100
    );
});
}];

这是路线:

app.config(function ($routeProvider, $compileProvider) {
$routeProvider.when("/", {
    controller:   loadingController,
    templateUrl:  'views/loading.html'
}).otherwise({
    redirectTo: "views/welcome.html"
});
});

现在在打开该对话框时,会出现警报(调试目的),但变量没有改变。就在我单击超链接时,警告出现并且变量发生变化,然后动画开始..

我做错了什么?

好的,我是这样得到的:

var loadingController = ["$scope", function ($scope) {
$scope.opened = false;

setTimeout(
    function () {
        $scope.$apply(function () {
            $scope.opened = true;
        });
    },
    100
);
}];

感谢post:http://jimhoskins.com/2012/12/17/angularjs-and-apply.html