2015-10-04 77 views
1

我正在嘗試獲取服務實例,但遇到錯誤。我得到的例外是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(); 

    }]); 

回答

2

你可以嘗試這樣的:

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

在你的情況下,它打破 原因:Calculator.random();不是一個函數。

0

就像Cyril說的,你可以在計算器工廠定義中隨機定義一個本地名稱的對象。然後返回該對象,但該對象具有一個名爲number的屬性,該屬性指向的函數不是稱爲隨機的屬性。

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>

0

這應該工作:

angular 
    .module('app', []) 
    .factory('Calculator', function() { 
     return function() { 
      return Math.random(); 
     } 
    });` 
相關問題