Angularjs 从不同文件链接服务
我有以下代码: JS: 在DataStoreService.js中:Angularjs 从不同文件链接服务,angularjs,service,Angularjs,Service,我有以下代码: JS: 在DataStoreService.js中: var myApp = angular.module('app'); myApp.factory('dataStoreService', ['$rootScope', function ($rootScope) { var service = { model: { name: '', email: '' }, Save
var myApp = angular.module('app');
myApp.factory('dataStoreService', ['$rootScope', function ($rootScope) {
var service = {
model: {
name: '',
email: ''
},
SaveState: function () {
sessionStorage.userService = angular.toJson(service.model);
},
RestoreState: function () {
service.model = angular.fromJson(sessionStorage.userService);
}
}
$rootScope.$on("savestate", service.SaveState);
$rootScope.$on("restorestate", service.RestoreState);
return service;
}]);
但是,我得到了以下错误:
$injector/nomod?p0=数据存储服务-模块“数据存储服务”不可用!您要么拼错了模块名,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数
我如何解决它?如何将不同文件中的不同控制器和服务链接到我的应用程序
var myApp = angular.module('app',['ngDropdowns']);
您不需要将'dataStoreService'
定义为此处的依赖项,它不是模块
它只是服务
,因此如果您需要控制器内的服务
将其注入控制器
,如下所示
myApp.controller('myCtrl', function($scope,dataStoreService) { ....
将其注入控制器而不是应用程序:
var myApp = angular.module('app',['ngDropdowns']);
myApp.controller('myCtrl', ['$scope', 'dataStoreService', function($scope, dataStoreService) { ....
app.js
// Declare the main module
var myApp = angular.module('myApp', []);
myApp.controller('Ctrl1', ['$scope', 'MyService', '$window', function($scope, MyService, $window) {
var str = MyService.getHello();
$window.alert(str);
}]);
angular.module('myApp').
service('MyService', function() {
return {
getHello: function () {
return 'hello';
},
}
}
);
aService.js
// Declare the main module
var myApp = angular.module('myApp', []);
myApp.controller('Ctrl1', ['$scope', 'MyService', '$window', function($scope, MyService, $window) {
var str = MyService.getHello();
$window.alert(str);
}]);
angular.module('myApp').
service('MyService', function() {
return {
getHello: function () {
return 'hello';
},
}
}
);
index.html
<!DOCTYPE html>
<html ng-app="myApp">
<head>
</head>
<body>
<p>An example showing how to share data between controllers using a service</p>
<div ng-controller="Ctrl1">
<h2>Controller 1 Says:</h2>
</div>
<script src="http://code.angularjs.org/1.2.1/angular.js"></script>
<script src="app.js"></script>
<script src="aService.js"></script>
</body>
</html>
显示如何使用服务在控制器之间共享数据的示例
控制员1说:
我已将其更改为-var myApp=angular.module('app',['ngDropdowns');和app.controller('myCtrl',['dataStoreService',function($scope){..}和上面的常用服务文件一样。仍然存在相同的错误。请注意,我希望服务在一个单独的js文件中。你能创建一个plnkr吗?我创建了一个简单的服务,其中控制器调用一个单独的服务来提醒一声你好:我在上面的plnkr中看不到任何单独的文件、服务或警报!你确定吗?第二个plnkr不是第一个:,我再打开它,它就会在那里工作