Подтвердить что ты не робот

$ viewContentLoaded не стреляет

$viewContentLoaded никогда не срабатывает в моем контроллере Angular. Следующее:

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

Никогда не попадает в точку останова и никогда не появляется предупреждение. Я думаю, что это довольно стандартное использование, поэтому я не уверен, что это может быть, но это определенно не стреляет. Все остальное в контроллере ведет себя правильно.

Что может вызвать это?

4b9b3361

Ответ 1

Основываясь на вашем комментарии выше, похоже, что у вас есть что-то вроде этого:

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

Я не уверен, что будет делать контент в теге ng-view, но $viewContentLoaded испускается из области ng-view. Это означает, что он только поднимается от ng-view, и поэтому ваш контроллер никогда не поймает его.

Ответ 2

Попробуйте это вместо:

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

Ответ 3

Я решил это, указав контроллер в поставщике маршрутов app.js, а не используя ng-controller в div в представлении. Я использую этот метод только в том случае, если мне нужно использовать $viewContentLoaded, иначе я использую ng-controller.

angular.module('myapp', [...])
.config(function ($routeProvider, $locationProvider) {
   $routeProvider
      .when('/MyRoute', {templateUrl: 'views/MyView.html', controller: MyController})
  });