26

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

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

永远不会遇到断点,也永远不会弹出警报。我认为这是非常标准的使用,所以我不确定它可能是什么,但它绝对不会触发。控制器中的其他所有内容都正常运行。

什么会导致这个?

4

3 回答 3

44

试试这个:

  function MyController($scope)
    {
        $scope.$watch('$viewContentLoaded', function()
        {
            alert("blah");
        });
    }
于 2014-02-13T22:57:20.500 回答
25

根据您上面的评论,听起来您有这样的事情:

<ng-view>
   <div ng-controller="MyController"></div>
</ng-view>

我不确定 ng-view 标记中的内容会做什么,但它$viewContentLoaded是从 ng-view 范围发出的。这意味着,它只会从 上升ng-view,因此您的控制器永远不会捕获它。

于 2013-04-25T21:04:13.160 回答
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})
  });
于 2014-01-02T21:42:21.303 回答