所以,我目前正在研究一个项目解决方案,它需要 2 个独立的 Controller ,并且它们需要共享数据。确切地说,他们只需要共享一次数据。我决定使用服务而不是使用 $rootScope,它可以处理此数据交换。然而,在我的代码中,我什至无法运行任何东西,因为我得到 p>
"Error: $injector:unpr Unknown Provider Unknown provider: simulationServiceProvider <- simulationService <- mainController"
我在这里和其他网站上查看了类似问题的各种答案,但没有任何帮助。那么为什么我的代码中会出现这样的注入(inject)器错误(注意, Controller 、模块和服务都在单独的文件中。我还删除了所有不必要的代码,只留下与服务使用相关的代码)
html:
<!DOCTYPE html>
<html lang="sk" >
<head>
<meta charset="utf-8" />
<title>...</title>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.2/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</head>
<body ng-app="App">
<div ng-controller="mainController">
....code here...
<div ng-controller="simulationController">
..more code here...
</div>
<script src="app.js"></script>
<script src="simulationService.js"></script>
<script src="mainController.js"></script>
<script src="simulationController.js"></script>
</body>
</html>
app.js 内容:
var app = angular.module("App", []);
mainController.js内容:
app.controller('mainController',['$scope','simulationService',function($scope, simulationService) {
...code...
$scope.startSimulation = function(value) {
simulationService.kNumber = $scope.kNumber;
simulationService.deltaFunction =$scope.deltaFunction;
simulationService.kSourceTracks = $scope.kSourceTracks;
simulationService.mode = $scope.stateEnum.MODE_2_SIMULATE;
simulationService.isActive = true;
}
...code...
}]);
simulationController.js内容:
app.controller('simulationController',['$scope','simulationService',function ($scope,simulationService) {
if(simulationService.isActive){
$scope.kNumber = simulationService.kNumber;
$scope.kSourceTracks = simulationService.kSourceTracks;
$scope.mode = simulationService.mode;
if($scope.mode == 6){
$scope.deltaFunction = simulationService.deltaFunction;
}
}
}]);
最后是simulationService.js:
app.service('simulationService', function() {
var _kNumber;
var _kSourceTracks;
var _deltaFunction;
var _mode;
var _isActive = false;
this.kNumber = _kNumber;
this.kSourceTracks = _kSourceTracks;
this.deltaFunction =_deltaFunction;
this mode = _mode;
this.isActive = _isActive;
});
这个设置给了我注入(inject)错误,我完全不知道为什么会发生这种情况。我不确定服务内容是否正确,或者它是否执行了我应该执行的操作,但首先我必须将其注入(inject)并运行,然后才能继续前进并努力使其执行我想要的操作。 非常感谢您的建议。
最佳答案
在这里创建了一个 fiddle :
https://jsfiddle.net/frishi/zxnLwz6d/8/
检查控制台以查看服务是否已正确加载。 您的服务定义中立即出现语法错误:
this mode = _mode;
应该是 this.mode = _mode;
关于javascript - AngularJS:使用服务在 Controller 之间发送值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34945703/