如何从不同的AngularJS文件中获取变量?

时间:2016-05-17 12:08:00

标签: angularjs

如何从不同的文件(使用不同的模块)获取$ scope变量?例如,我有两个文件 - index.jslogin.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       在错误(本机)       在

2 个答案:

答案 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){
}]);