2014-10-18 2 views
-1

Я пытаюсь определить контроллер в абстрактном состоянии, чтобы я мог иметь один контроллер для всех своих представлений, но функции внутри контроллера не вызываются, если контроллер определен снаружи.Контроллер для просмотра в состоянии

.state('update', { 
     url : '/update', 
     abstract: true, 
     template: '<ui-view/>', 
     controller : function($scope) { //works 
      $scope.hello = function() { 
       alert("hello"); 
      } 
     } 
     controller : 'updateController' // Doesn't work 
    }) 
    .state('update.detail', { 
     url : '/view/:id', 
     views : { 
      "" : { 
       templateUrl : 'update-detail.html' 
      }, 

      "[email protected]" : { 
       templateUrl : 'header.html' 
      }, 
      "[email protected]" : { 
       templateUrl : 'generic-navigation.html' 
      }, 
      "[email protected]" : { 
       templateUrl : 'mobile-navigation.html' 
      }, 
      "[email protected]" : { 
       templateUrl : 'update-content.html' 
      } 
     } 
    }) 

HTML

header.html 
<div ng-click="hello();"></div> //Click event doesn't get fired for (controller : 'updateController') 


app.controller('updateController', ['$scope', '$state', function($state, $scope) { 
console.log("inside update") 
$scope.hello = function() { 
     alert("hello"); 
} 
}]); 

ответ

0

Посмотрите, как вы определили ваш контроллер:

['$scope', '$state', function($state, $scope) 

аргументы не в правильном порядке. Таким образом, переменная $ state на самом деле является областью действия, а переменная $ scope на самом деле является состоянием.

+0

благодарит тонну своей работы – user1184100

Смежные вопросы