$viewContentLoaded
永远不会在我的Angular控制器中触发。以下内容:
function MyController($scope)
{
$scope.$on('$viewContentLoaded', function()
{
alert("blah");
});
}
永远不会遇到断点,也不会弹出警报。我认为这是非常标准的使用,所以我不确定它是什么,但它肯定不会解雇。控制器中的其他所有内容都表现正常。
导致这种情况的原因是什么?
答案 0 :(得分:39)
请改为尝试:
function MyController($scope)
{
$scope.$watch('$viewContentLoaded', function()
{
alert("blah");
});
}
答案 1 :(得分:24)
根据你上面的评论,听起来你有这样的事情:
<ng-view>
<div ng-controller="MyController"></div>
</ng-view>
我不确定ng-view标记中的内容会起什么作用,但是从ng-view范围中$viewContentLoaded
发出 。这意味着,它只会从ng-view
上升,因此您的控制器永远不会捕获它。
答案 2 :(得分:3)
我通过在app.js路由提供程序中指定控制器而不是在视图中的div中使用ng-controller来解决这个问题。如果我需要使用$ viewContentLoaded,我只使用这种方法,否则我使用ng-controller。
angular.module('myapp', [...])
.config(function ($routeProvider, $locationProvider) {
$routeProvider
.when('/MyRoute', {templateUrl: 'views/MyView.html', controller: MyController})
});