2016-06-10 86 views
0

我是新来的Angular js.我看到了类似的问题,但我不明白这一点。 我有2个控制器从另一个控制器重新加载一个控制器Angular js

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

RatingCtrl和otherProfileCtrl,这两个模块是相互关联的。我需要的是,我从otherProfileCtrl使用$route.reload();。就是有没有办法做到这一点没有uisng服务重装RatingCtrl?plz帮助

+0

你为什么不想使用服务? – Guillaume

+0

我认为这很难。如果只有通过服务才可能,我可以试试这种方式 – sulu666

回答

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发送消息。这是您正在寻找的功能。这就是说,在服务中实现共享行为会更好,因为跟踪所有的自定义事件可能特别困难。

希望这会有所帮助。

+0

谢谢,如果我们试图做同样的事情,但在两个不同的应用程序中,它工作正常 – sulu666

+0

...我们需要什么变化?意味着我有2个控制器在2个不同的应用程序(在同一个项目中) –

+0

@NullPointer假设你正在使用Angular 1. *,我想不出在两个完全独立的模块之间正确做到这一点的方法。也就是说,如果模块之间存在层次结构(例如依赖于另一个模块),则应该使用相同的解决方案,因为只有一个根作用域。尽管如此,我的角度相当生疏。 – Kazimieras

相关问题