我正在尝试在控制器之间共享数据 - 我的侧面导航控制器带有一个表列表,而我的主控制器控制表本身..
我的服务非常简单:
.factory('TableData', ['$resource',
function($resource) {
return $resource('api/db/:table', {table: '@table'}, {
'save': {method:'POST'},
'update': { method:'PUT' },
'delete':{method:'DELETE'},
'list': {method: 'GET', isArray: true },
'getTable': {method: 'GET', isArray: true }
});
}])
和控制器:
.controller('SideNavController', function ($scope, $http, $state, $auth, Account, $stateParams, Tables, $rootScope, TableData) {
TableData.list().$promise.then(function(tables){
$scope.tables = tables;
});
$scope.getTable = function(table){
TableData.getTable({table:table}).$promise.then(function(table){
$scope.selectedTable = table;
});
}
});
和主控制器:
.controller('ManagerCtrl', function($scope, $auth, Account, $http, $rootScope, ParamData, UserData, DocParamData, DocTypeData, ParamTypeData, ParamValueData, SysParamValuesData, TableData ) {
$scope.selectedTable = TableData.getTable();
})
我将如何分享这些数据?我怎样才能传递table
参数?
答案 0 :(得分:0)
您可以将表与$ rootScope关联的一种方法,因为它是angular中所有$ scope的父作用域,因此可以访问两个控制器。
.controller('SideNavController',函数($ scope,$ http,$ state,$ auth,Account,$ stateParams,Tables,$ rootScope,TableData){
TableData.list().$promise.then(function(tables){
$scope.tables = tables;
});
$scope.getTable = function(table){
TableData.getTable({table:table}).$promise.then(function(table){
$rootScope.selectedTable = table;
});
}
});
现在可以在两个控制器中访问这个$ rootScope.selectedTable。
第二种方法,您可以编写一个角度服务,您可以在其中放置getTable()方法。
app.service('MyService',function($ http,TableData){ this.getTable = function(table,callback){ TableData.getTable({表:表})$ promise.then(函数(表){ 回调(表); }); } });
现在您可以注入此服务并调用getTable()方法,该方法会将表obj传递给回调。
.controller('ManagerCtrl', function($scope, $auth, Account, $http, $rootScope, ParamData, UserData, DocParamData, DocTypeData, ParamTypeData, ParamValueData, SysParamValuesData, TableData, MyService ) {
MyService.getTable(table, function(table) {
$scope.selectedTable = table;
});
})