0

我有一个生成令牌的自定义服务,在这个服务中我需要使用 MD5 函数,MD5 函数在模块中angular-md5

这是我的服务代码,从角度模块generate_token使用的功能md5.createhash(),但我得到了错误:TypeError: Cannot read property 'createHash' of undefined

我想我做错了什么,但我看不出是什么

angular.module('app.services', ['angular-md5'])

.service('Auth', [function($scope, md5){
    var self = this;

    this.rand_alphanumeric = function() {
        var subsets = [];
        subsets[0] = [48, 57]; // ascii digits
        subsets[1] = [65, 90]; // ascii uppercase English letters
        subsets[2] = [97, 122]; // ascii lowercase English letters 

        // random choice between lowercase, uppercase, and digits
        s = Math.floor(Math.random() * 2) + 0
        ascii_code = Math.floor(Math.random() * (subsets[s][1] - subsets[s][0] + 1) + subsets[s][0]);
        return String.fromCharCode(ascii_code);
    }

    this.generateToken = function() {
        var str = "";
        for (var i = 0; i < 8; i++) 
            str += self.rand_alphanumeric();
        return md5.createHash(str);
    }
}]);
4

3 回答 3

5

您没有正确使用依赖数组注入

尝试这个

angular.module('app.services', ['angular-md5'])

.service('Auth', ['$scope','md5',function($scope, md5){
var self = this;
于 2016-02-22T09:28:18.197 回答
0

跳过前面的括号function($scope, md5),你应该没问题。在 Angular 中,注入语法有不同的可能性。见:https ://docs.angularjs.org/guide/di

于 2016-02-22T09:26:32.870 回答
0

您可能必须在函数之前在数组中定义 $scope 和 md5。

例如

    .controller('MainCtrl', ['$scope', 'md5', function($scope, md5) {
      $scope.$watch('email' ,function() {
        $scope.message = 'Your email Hash is: ' + md5.createHash($scope.email || '');
      });
    }]);
于 2016-02-22T09:28:37.397 回答