javascript - AngularJS:使用服务在 Controller 之间发送值不起作用

标签 javascript angularjs service

所以,我目前正在研究一个项目解决方案,它需要 2 个独立的 Controller ,并且它们需要共享数据。确切地说,他们只需要共享一次数据。我决定使用服务而不是使用 $rootScope,它可以处理此数据交换。然而,在我的代码中,我什至无法运行任何东西,因为我得到

"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/

相关文章:

javascript - 用于创建离散和三 Angular 分布的 JS 模拟框架

javascript - 如何在 d3js 中更新分组条形图

javascript - 在 JavaScript 中将 DOMString 转换为 String

javascript - 为什么图像网格在 angularjs ng-repeat 中不扩展但 javascript 工作正常?

Android Google Analytics 与服务的连接失败

javascript - 创建 jquery 插件 - 在同一元素上使用两次时不起作用

javascript - Ionic - ion-nav-view 在模拟器中崩溃

android - onHandleIntent 没有被调用

c# - SignalR 服务在启动时崩溃

javascript - Angularjs formData.append 不起作用