我是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
答案 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
发送消息。这是您正在寻找的功能。
话虽如此,在服务中实现共享行为会更好,因为跟踪所有自定义事件可能会特别困难。
希望这有帮助。