两个控制器angularjs之间的共享功能
我正在尝试在angularjs中的两个控制器之间创建一个共享资源。 我在第二个控制器中使用了getData()来获取存储的数据,并在第二个控制器中填充数据表。为了简单起见,我在代码中省略了数据表部分 以下是我的控制器文件,其中包含两个控制器两个控制器angularjs之间的共享功能,angularjs,dependency-injection,controllers,data-sharing,Angularjs,Dependency Injection,Controllers,Data Sharing,我正在尝试在angularjs中的两个控制器之间创建一个共享资源。 我在第二个控制器中使用了getData()来获取存储的数据,并在第二个控制器中填充数据表。为了简单起见,我在代码中省略了数据表部分 以下是我的控制器文件,其中包含两个控制器 (function(){ var app = angular.module('adminCtrls',[]); // Main Controller app.controller('mainCtrl', funct
(function(){
var app = angular.module('adminCtrls',[]);
// Main Controller
app.controller('mainCtrl', function( $scope, $http,testSrv ){
// Get the data form the phoenix database based on the query defined
// in db_size.php
$http.get('rest/admin/db_size.php').then(function(response){
$scope.answers = response.data;
$scope.me = "$scope.answer";
testSrv.setData($scope.me);
});
});
})
// Modal Controller
app.controller('modalCtrl', function($scope,$http,testSrv ){
console.log(testSrv.getData());
});
});
})(); // EOF
下面是我的angular应用程序文件
(function(){
// Angular App
var app = angular.module('adminApp', ['ngRoute', 'adminCtrls', 'siteSrvs']);
// Routing
app.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider){
// HTML5 Mode
$locationProvider.html5Mode({
enabled: true
});
}]);
})();
这是我的服务
(function(){
// Phoenix Services
var phx = angular.module('siteSrvs',[]);
// Main
phx.service('testSrv', function($http){
// Data Storage
var data = '';
var answers = '';
// Returned Functions
return {
getData : _getData,
setData : _setData,
getAnswers : _getAnswers
}
// Get Data
function _getData(){
return data;
}
// Set Data
function _setData(t){
if(t) data = t;
}
function _getAnswers(){
return $http.get('/rest/test2/test2.php');
}
});
})(); // EOF
我试图在第一个控制器中设置数据,并从第二个控制器中获取相同的数据
我的第二个控制器无法看到第一个控制器存储的数据
我想知道我是否缺少任何模块注入 我想说,您的代码中的所有内容都是正确的,您只需将模态控制器绑定到视图,以便调用它,然后您就会看到服务中的值:
<body ng-controller="MainCtrl">
<p>Hello {{name}}!</p>
<div ng-controller="modalCtrl">{{data}}</div>
</body>
下面是一个自己尝试的方法。我尝试在第二个控制器中使用getData方法来获取数据并在第二个控制器中填充数据表。我的问题是getData没有显示第一个控制器存储的数据为了保持简单,我注释掉了对第一个控制器中的服务的调用。我建议您检查setData是否被实际调用,因为如果有任何错误,将永远不会被调用。您可以在该块之外调用setData,只是为了测试它或捕捉该调用的错误。
// Modal Controller
app.controller('modalCtrl', function($scope, $http, testSrv) {
$scope.data = testSrv.getData();
console.log('modalCtrl',$scope.data);
});