javascript - 将服务注入(inject) Controller 会引发错误

标签 javascript angularjs model-view-controller

我无法将服务注入(inject) Controller 。一年前我能够执行类似的代码并且它有效,但这次我运气不好。

app.js

'use strict';
var app = angular.module('product', [
  "ngRoute",
]);

ma​​in.ctrl.js

'use strict';
app.controller('mainCtrl', ['$scope','$http','srv', function ($scope,$http,srv) {
    var srvUrl = srv.getSrvUrl;
    var data = srv.getData(1,2);
}]);

srv.js

app.service("srv", function ($http,$scope) {
    this.getSrvUrl = "http://127.0.0.1/api/";
    this.getData = function(a,b) { return a*b; }
});

index.html

<!--JS-->
<script type="text/javascript" src="bower_components/angular/angular.min.js"></script>
<!--APP-->
<script type="text/javascript" src="app/app.js"></script>
<!-- ROUTE -->
<script type="text/javascript" src="bower_components/angular-route/angular-route.min.js"></script>
<script type="text/javascript" src="app/routes/app.route.js"></script>
<!-- SERVICE -->
<script type="text/javascript" src="app/services/srv.js"></script>
<!--CONTROLLER-->
<script type="text/javascript" src="app/controllers/main.ctrl.js"></script>

控制台错误

angular.js:14362 
Error: [$injector:unpr] http://errors.angularjs.org/1.6.2/$injector/unpr?p0=%24scopeProvider%20%3C-%20%24scope%20%3C-%20srv
at angular.js:38
at angular.js:4650
at Object.d [as get] (angular.js:4803)
at angular.js:4655
at d (angular.js:4803)
at e (angular.js:4828)
at Object.instantiate (angular.js:4874)
at Object.<anonymous> (angular.js:4712)
at Object.invoke (angular.js:4862)
at Object.$get (angular.js:4696)

请帮忙。

最佳答案

您无法在服务中注入(inject) $scope

服务是用于共享数据的单例对象和一些可重用的方法。

应该是这样的

app.service("srv", function ($http, $scope) {
    return {
        getSrvUrl: "http://127.0.0.1/api/",
        getData: function (a, b) { return a * b; }
    }
});

关于javascript - 将服务注入(inject) Controller 会引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44976324/

相关文章:

javascript - 如何在创建 dom 节点之前找到它的尺寸?

javascript - 如何使用 AngularJS 选中/取消选中所有复选框?

model-view-controller - MVC是设计模式还是架构模式

database - 如何使用数据库支持的资源本地化 MVC

javascript - 无法在 IE 中访问 iframe 内容

javascript - JSHint 在揭示模块模式时抛出 'undefined' 警告

javascript - 在 HTML 中使用自定义标签的含义是什么,或者不使用自定义标签的优点是什么?

angularjs - 何时使用子状态与ui-router的多个 View

javascript - 如何使用动态变量名调用 Angular 范围?

c# - 使用 jquery 和 c# mvc 将表数据返回为文件