1

我正在尝试在我的应用程序中的服务中使用 angular-local-storage 模块(https://github.com/grevory/angular-local-storage),版本 0.2.2(根据 bower)。当我在服务中调用它时,我似乎遇到了问题,但是当我将它放在控制器中时它工作正常。

我把它配置成这样:

angular.module('myApp', [ 'LocalStorageModule' ])
    .config(function (localStorageServiceProvider) {
        localStorageServiceProvider
          .setPrefix('test')
          .setStorageType('localStorage');
     })...

然后在我的服务中,我有这样的(简化,用于测试目的):

angular.module('myApp')
    .service('UserService', [ 'localStorageService',
        function(localStorageService) {
            return {
                save: function() {
                    localStorageService.set('user', 'me');
                }
            };
    }]);

此代码产生以下错误:

TypeError:localStorageService.set 不是函数

另一方面,如果我将完全相同的代码放入控制器(实际上是调用此服务的控制器)中,一切都会按预期工作。angular-local-storage 在服务中不起作用吗?

提前致谢!

4

1 回答 1

0

它确实对我有用,只需稍作调整。请参见下面的代码片段。

angular.module('myApp', [ 'LocalStorageModule' ])
  .config(function (localStorageServiceProvider) {
    localStorageServiceProvider
      .setPrefix('test')
      .setStorageType('localStorage');
  })
  .service('UserService', [ 'localStorageService',
    function(localStorageService) {
      return {
        save: function() {
          localStorageService.set('user', 'me');
        }
      };
    }])
  .controller('MainCtrl', function($scope, UserService){
    $scope.test = function(){
      console.debug('save called');
      UserService.save();
    };
  });
<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

    <div ng-controller="MainCtrl">
        <button ng-click="test()">Test</button>
    </div>

    <script type="text/ng-template" id="home.html">
    Lorem ipsum
  </script>

    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
    <script src="bower_components/angular-local-storage/dist/angular-local-storage.js"></script>

</body>
</html>

于 2015-07-01T19:47:46.603 回答