在控制器中获取服务实例

时间:2015-10-04 01:02:28

标签: angularjs

我试图获取服务实例但是收到错误。我得到的例外是Calculator.random()不是函数。知道我做错了吗?

angular
    .module('app')
    .factory('Calculator',function(){
        var random = {};
        random.number = function (){
            return Math.random();
        };
        return random;
    });

angular
    .module('app')
    .controller('homeCtrl', ['$scope','Calculator', function ($scope,Calculator) {

        $scope.random = Calculator.random();

    }]);

3 个答案:

答案 0 :(得分:2)

您可以尝试这样:

angular
.module('app').controller('homeCtrl', function($scope, Calculator) {
$scope.random=Calculator.number();//in your factory number holds the random function.
}

在你的情况下,它打破了 原因: Calculator.random(); 不是函数。

答案 1 :(得分:0)

与Cyril一样,您可以在计算器工厂定义中随机定义一个具有本地名称的对象。然后返回该对象,但该对象有一个名为number的属性,该属性指向的函数不是名为random的属性。

angular
    .module('app', [])
    .factory('Calculator',function(){
        var random = {};
        random.number = function (){
            return Math.random();
        };
        return random;
    });

angular
    .module('app')
    .controller('homeCtrl', ['$scope','Calculator', function ($scope,Calculator) {

        $scope.random = Calculator.number();

    }]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="app">
<div ng-controller="homeCtrl">{{random}}</div>
</div>

答案 2 :(得分:0)

这应该有效:

UPDATE