如何从不同的文件(使用不同的模块)获取$ scope变量?例如,我有两个文件 - index.js
和login.js
,我想从login.js
中的index.js
获取用户名。我尝试使用服务,但无法实现这一目标。控制器在另一个角度文件中看不到服务。
部分代码如下:
bookApp.controller('bookListCtrl', ['sharedProperties', function($scope, $http, sharedProperties) {
'use strict';
$scope.name = "Alice";
console.log("in book controller");
console.log("getting login name: "+sharedProperties.getProperty());
和
var authentication = angular.module('authentication', []);
authentication.service('sharedProperties', function () {
var property = 'First';
return {
getProperty: function () {
return property;
},
setProperty: function(value) {
property = value;
}
};
});
我得到了这个例外 -
angular.min.js:63错误:未知提供者:authentication.sharedPropertiesProvider< - authentication.sharedProperties 在错误(本机) 在
答案 0 :(得分:0)
您能举例说明您是如何使用服务的吗?
通常,如果您定义控制器,如:
app.controller('LoginController', ['UserService', function($scope) {
$scope.someMethod = function(){
// push information to service
UserService.username = $scope.username;
}
}]);
app.controller('IndexController', ['UserService', function($scope) {
// pull information from service
$scope.username = UserService.username;
}]);
它应该工作。我必须建议你使用Controller而不是$ scope。更多信息:https://docs.angularjs.org/api/ng/directive/ngController
答案 1 :(得分:0)
在给定的实现中存在2个问题。第一个问题是模块的身份验证'需要成为消费模块的依赖项。第二个问题是bookListCtrl的声明。它需要定义如下。
bookApp.controller('bookListCtrl', ['$scope','$http','sharedProperties', function($scope, $http, sharedProperties){
}]);