从外部控制器调用ng-view控制器方法?

时间:2014-07-17 09:40:32

标签: angularjs angularjs-directive angularjs-scope angularjs-service angularjs-routing

HTML:

<html ng-app="san">
<head>
</head>
<body ng-controller="sanctrl">
<div>
    AngularJS</div>
<div ng-view="">
</div>
<button type="button" ng-click="init()" class="btn btn-blue">
    Save</button>
</body>
</html>

主控制器:

san.controller('sanctrl', function ($scope, $http, $q, $location, $anchorScroll, $filter, dataFactory) {
//nothing in this controller.
});

ng-view controller:

san.app.controller('cereals', function ($scope, dataFactory) {
  $scope.init(){
    $scope.test = "test";
  };
});

我试图从ng-view范围之外调用init方法。可能吗?如果没有那么我们有什么选择?

2 个答案:

答案 0 :(得分:1)

您可以使用触发的广播事件:

  $rootScope.$broadcast('testEvent', testArray);

然后在第二个控制器中你可以听取这个事件:

  $scope.$on('testEvent', function(event, array) {

      // Do stuff here

   });

答案 1 :(得分:0)

作为@ lulu88,您可以使用除此之外的$broadcast

写一个单独的服务将int()函数中的代码移动到那个,然后你可以从任何控制器访问