从另一个控制器Angular js重新加载一个控制器

时间:2016-06-10 05:33:26

标签: javascript angularjs

我是Angular js.的新手。我见过类似的问题,但我不明白。 我有2个控制器

userControllers.controller('RatingCtrl', function($scope,$http,$rootScope,$route)
userControllers.controller('otherProfileCtrl', function ($scope, $routeParams, $rootScope, $http, $location, $window, $timeout,$uibModal, $compile) 

RatingCtrl和otherProfileCtrl,这两个模块是相互关联的。我需要的是,我已经使用$route.reload();从otherProfileCtrl重新加载RatingCtrl。如果没有uisng服务,有没有办法做到这一点?plz help

1 个答案:

答案 0 :(得分:4)

您可以将事件从一个控制器传递到另一个控制器以实现此目的。然后你会做类似的事情:

var app = angular.module('myApp', []);

app.controller('firstController', ['$scope', '$rootScope',
  function($scope, $rootScope) {

    $scope.text = 'Initial text';
    $scope.changeText = function(message) {
      $scope.text = message;
    };

    $rootScope.$on('customEvent', function(event, message) {
      $scope.changeText(message);
    });

  }
]);

app.controller('secondController', ['$scope',
  function($scope) {

    $scope.message = 'Message from second controller';

    $scope.sendEvent = function() {
      $scope.$emit('customEvent', $scope.message)
    };

  }
]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp">
  <div ng-controller="firstController">
    <h2>This is the fist controller:</h2>
    <p>{{text}}</p>
  </div>
  <div ng-controller="secondController">
    <h2>This is the second controller:</h2>
    <input type="text" ng-model="message" />
    <br>
    <button ng-click="sendEvent()">Send message</button>
  </div>

</div>

此处,firstController侦听传播到$rootScope的事件,secondController发送消息。这是您正在寻找的功能。

话虽如此,在服务中实现共享行为会更好,因为跟踪所有自定义事件可能会特别困难。

希望这有帮助。