$ viewContentLoaded没有触发

时间:2013-04-25 20:08:40

标签: javascript jquery angularjs

$viewContentLoaded永远不会在我的Angular控制器中触发。以下内容:

function MyController($scope)
{
    $scope.$on('$viewContentLoaded', function()
    {
        alert("blah");
    });
}

永远不会遇到断点,也不会弹出警报。我认为这是非常标准的使用,所以我不确定它是什么,但它肯定不会解雇。控制器中的其他所有内容都表现正常。

导致这种情况的原因是什么?

3 个答案:

答案 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})
  });