Javascript 服务将不会注入控制器

Javascript 服务将不会注入控制器,javascript,angularjs,ionic-framework,angular-services,angularjs-factory,Javascript,Angularjs,Ionic Framework,Angular Services,Angularjs Factory,我以前做过一些角度应用程序,但从未真正使用过模块。我现在正在创建一个Ionic应用程序(使用Angular),由于某些原因,我无法将我的服务注入控制器 controllers.js angular.module('myapp.controllers', []) .controller('StreamCtrl', ['$scope', 'StreamService', function($scope, StreamService) { $scope.playlists = [1,2,3,4

我以前做过一些角度应用程序,但从未真正使用过模块。我现在正在创建一个Ionic应用程序(使用Angular),由于某些原因,我无法将我的服务注入控制器

controllers.js

angular.module('myapp.controllers', [])
.controller('StreamCtrl', ['$scope', 'StreamService',
function($scope, StreamService) {
    $scope.playlists = [1,2,3,4];
}]);
angular.module('myapp.services', [])
.factory('StreamService', ['$scope', function($scope) {
    var self = {
        'fetching' : false,
        'streamItems' : []
    };
    return self;
]);
angular.module('myapp', ['ionic',
                        'myapp.services',
                        'myapp.controllers',
                        'ngCordova',
                        'LocalStorageModule'])
// And lots of other code that isn't needed for this question.
services.js

angular.module('myapp.controllers', [])
.controller('StreamCtrl', ['$scope', 'StreamService',
function($scope, StreamService) {
    $scope.playlists = [1,2,3,4];
}]);
angular.module('myapp.services', [])
.factory('StreamService', ['$scope', function($scope) {
    var self = {
        'fetching' : false,
        'streamItems' : []
    };
    return self;
]);
angular.module('myapp', ['ionic',
                        'myapp.services',
                        'myapp.controllers',
                        'ngCordova',
                        'LocalStorageModule'])
// And lots of other code that isn't needed for this question.
app.js

angular.module('myapp.controllers', [])
.controller('StreamCtrl', ['$scope', 'StreamService',
function($scope, StreamService) {
    $scope.playlists = [1,2,3,4];
}]);
angular.module('myapp.services', [])
.factory('StreamService', ['$scope', function($scope) {
    var self = {
        'fetching' : false,
        'streamItems' : []
    };
    return self;
]);
angular.module('myapp', ['ionic',
                        'myapp.services',
                        'myapp.controllers',
                        'ngCordova',
                        'LocalStorageModule'])
// And lots of other code that isn't needed for this question.
因此,当我尝试加载
StreamCtrl
时,最终得到以下错误:

Error: [$injector:unpr] Unknown provider: $scopeProvider <- $scope <-StreamService
http://errors.angularjs.org/1.3.6/$injector/unpr?p0=<ion-nav-view name="menuContent" class="view-container" nav-view-transition="ios">copeProvider%20%3C-%20%24scope%20%3C-%20StreamService
at REGEX_STRING_REGEXP (http://localhost:8100/lib/ionic/js/ionic.bundle.js:7888:12)
at http://localhost:8100/lib/ionic/js/ionic.bundle.js:11806:19
at Object.getService [as get] (http://localhost:8100/lib/ionic/js/ionic.bundle.js:11953:39)
at http://localhost:8100/lib/ionic/js/ionic.bundle.js:11811:45
at getService (http://localhost:8100/lib/ionic/js/ionic.bundle.js:11953:39)
at Object.invoke (http://localhost:8100/lib/ionic/js/ionic.bundle.js:11985:13)
at Object.enforcedReturnValue [as $get] (http://localhost:8100/lib/ionic/js/ionic.bundle.js:11847:37)
at Object.invoke (http://localhost:8100/lib/ionic/js/ionic.bundle.js:11994:17)
at http://localhost:8100/lib/ionic/js/ionic.bundle.js:11812:37
at getService (http://localhost:8100/lib/ionic/js/ionic.bundle.js:11953:39)

错误:[$injector:unpr]未知提供程序:$scopeProvider您的错误清楚地表明
StreamService
工厂内部存在问题

您永远不能将
$scope
注入
工厂
中。删除
$scope
依赖项将解决您的问题

工厂主要用于公开单例方法、公共和可共享数据。通常我们编写任何服务调用或方法,这些调用或方法可以被任何使用依赖性注入它的模块访问

工厂

angular.module('myapp.services', [])
.factory('StreamService', [function() {
    var self = {
        'fetching': false,
        'streamItems': []
    };
    return self;
}]);

希望这能对你有所帮助。谢谢。

看到这个了吗

您将服务视为一个控制器,永远不要将
$scope
注入服务,因为它不存在

var myApp = angular.module('myApp',['myapp.services','myapp.controllers']);

angular.module('myapp.controllers', [])
.controller('StreamCtrl', ['$scope', 'StreamService',
function($scope, StreamService) {
    $scope.playlists = [1,2,3,4];
}]);

angular.module('myapp.services', []).factory('StreamService',  function() {
    var self = {
        'fetching' : false,
        'streamItems' : []
    };
    return self;}
);

downvoter我可以知道downvote的原因吗?我不知道是谁投了反对票,但可能是因为你的答案语法错误,数组中不应该有函数service@NaeemShaikh不,没关系。那是严格的-di@JackSlingerland我也这么做了为什么我的答案对我没有帮助我发现了。。编辑了你的答案@downvoter请删除downvoteGood呼叫。完全是自动引导编写的,并且忘记删除$scope依赖项。