从另一个控制器调用AngularJS控制器可以通过以下几种方式实现:
例如,创建一个名为"DataSharingService"的服务:
app.service('DataSharingService', function() {
var sharedData = {};
this.setData = function(data) {
sharedData = data;
};
this.getData = function() {
return sharedData;
};
});
在第一个控制器中设置数据:
app.controller('Controller1', function($scope, DataSharingService) {
var data = { name: 'John', age: 25 };
DataSharingService.setData(data);
});
在第二个控制器中获取数据:
app.controller('Controller2', function($scope, DataSharingService) {
var data = DataSharingService.getData();
console.log(data); // { name: 'John', age: 25 }
});
例如,在第一个控制器中触发事件:
app.controller('Controller1', function($scope, $rootScope) {
var data = { name: 'John', age: 25 };
$rootScope.$broadcast('dataUpdated', data);
});
在第二个控制器中监听事件:
app.controller('Controller2', function($scope, $rootScope) {
$scope.$on('dataUpdated', function(event, data) {
console.log(data); // { name: 'John', age: 25 }
});
});
例如,在路由配置中定义参数:
app.config(function($routeProvider) {
$routeProvider
.when('/controller1/:name/:age', {
templateUrl: 'controller1.html',
controller: 'Controller1'
})
.when('/controller2/:name/:age', {
templateUrl: 'controller2.html',
controller: 'Controller2'
});
});
在第一个控制器中导航到第二个控制器并传递参数:
app.controller('Controller1', function($scope, $location) {
var name = 'John';
var age = 25;
$location.path('/controller2/' + name + '/' + age);
});
在第二个控制器中获取参数:
app.controller('Controller2', function($scope, $routeParams) {
var name = $routeParams.name;
var age = $routeParams.age;
console.log(name); // 'John'
console.log(age); // '25'
});
这些方法可以根据具体的需求选择使用,它们都可以实现从另一个控制器调用AngularJS控制器的功能。
领取专属 10元无门槛券
手把手带您无忧上云