我正在使用angular framework并尝试将$ scope传递给我的应用程序中的不同控制器。
更新
我的问题是,在用户点击按钮之前,我无法获取$ scope数据。
.controller('firstCtrl', function($scope) {
$scope.getTest = function(){
$scope.test1 = 'good.'
$scope.test2 = 'bad.'
…..more
}
})
我需要将$ scope对象传递给不同的控制器
.controller('secondCtrl', function($scope) {
console.log($scope.test1)
})
我该怎么办?谢谢!
答案 0 :(得分:2)
要在两个控制器之间共享数据,您需要使用 factory 。
有关详细信息,请观看此视频:约翰·林德奎斯特的“AngularJS Video Tutorial: Sharing Data Between Controllers”。
答案 1 :(得分:2)
要在控制器之间共享信息,请使用服务。可以像这样创建服务:
//Create angular main app module
var app = angular.module('myApp', []);
//create a service
app.service('sharedService', function () {
this.test1 = [1, 2, 3, 4];
});
//one controller, injecting the service
app.controller('firstCtrl', function ($scope, sharedService) {
sharedService.test1[0] = 5;
console.log(sharedService.test1[0]) //5, 2, 3, 1
});
//two controller, injecting the same service
app.controller('secondCtrl', function ($scope, sharedService) {
sharedService.test[1] = 4;
console.log(sharedService.test1[0]) //5, 4, 3, 1
});
这是我刚刚在jsFiddle上创建的一个例子:
答案 2 :(得分:1)
在$ rootScope上使用自定义事件
.controller('firstCtrl',['$rootScope', function($rootScope) {
$scope.getTest = function(){
$rootScope.your_object = {foo:bar}
$rootScope.$emit('custom_event');
}
}])
.controller('secondCtrl', function($scope,$rootScope) {
$rootScope.$on('custom_event',function(){
//do stuff
//$rootScope.your_object is available
})
});
如果控制器实例化多次
,则可能需要从该事件中取消绑定根作用域可能存在反对“污染”的反对意见。根范围,但那是它的用途。