$ viewContentLoaded не стреляет
$viewContentLoaded
никогда не срабатывает в моем контроллере Angular. Следующее:
function MyController($scope)
{
$scope.$on('$viewContentLoaded', function()
{
alert("blah");
});
}
Никогда не попадает в точку останова и никогда не появляется предупреждение. Я думаю, что это довольно стандартное использование, поэтому я не уверен, что это может быть, но это определенно не стреляет. Все остальное в контроллере ведет себя правильно.
Что может вызвать это?
Ответы
Ответ 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})
});