The examples in this article describe the communication methods between AngularJS controllers. Share it with everyone for your reference, the details are as follows:
1. Use the inheritance method of scope
Since the inheritance of scope is based on the prototype inheritance method of js, there are two situations here. When the value above the scope is For basic types, modifying the value on the parent scope will affect the child scope. On the contrary, modifying the child scope will only affect the value on the child scope and will not affect the value on the parent scope; if you need the parent scope and If subscopes share a value, you need to use the latter one, that is, the value on the scope is an object. Modifications on either side can affect the other side. This is because objects in js are reference types.
Basic types
function Sandcrawler($scope) { $scope.location = "Mos Eisley North"; $scope.move = function(newLocation) { $scope.location = newLocation; } } function Droid($scope) { $scope.sell = function(newLocation) { $scope.location = newLocation; } }
html:
Location: {{location}}
Location: {{location}}
Object
function Sandcrawler($scope) { $scope.obj = {location:"Mos Eisley North"}; } function Droid($scope) { $scope.summon = function(newLocation) { $scope.obj.location = newLocation; } }
html: reee
Sandcrawler Location: {{location}}
function Sandcrawler($scope) { $scope.location = "Mos Eisley North"; $scope.$on('summon', function(e, newLocation) { $scope.location = newLocation; }); } function Droid($scope) { $scope.location = "Owen Farm"; $scope.summon = function() { $scope.$emit('summon', $scope.location); } }
Sandcrawler Location: {{location}}
Droid Location: {{location}}
function Sandcrawler($scope) { $scope.location = "Mos Eisley North"; $scope.recall = function() { $scope.$broadcast('recall', $scope.location); } } function Droid($scope) { $scope.location = "Owen Farm"; $scope.$on('recall', function(e, newLocation) { $scope.location = newLocation; }); }
Sandcrawler Location: {{location}}
Droid Location: {{location}}
function Sandcrawler($scope) { $scope.$on('requestDroidRecall', function(e) { $scope.$broadcast('executeDroidRecall'); }); } function Droid($scope) { $scope.location = "Owen Farm"; $scope.recallAllDroids = function() { $scope.$emit('requestDroidRecall'); } $scope.$on('executeDroidRecall', function() { $scope.location = "Sandcrawler" }); }
R2-D2
Droid Location: {{location}}
C-3PO
Droid Location: {{status}}
var app = angular.module('myApp', []); app.factory('instance', function(){ return {}; }); app.controller('MainCtrl', function($scope, instance) { $scope.change = function() { instance.name = $scope.test; }; }); app.controller('sideCtrl', function($scope, instance) { $scope.add = function() { $scope.name = instance.name; }; });