2017-03-06 130 views
1

在我的模塊的恆定值,我不斷添加像下面無法獲得angularjs服務

var app = angular.module("myapp", ["ngRoute"]).constant("myConfig", { 
"url": "http://localhost", 
"port": "80" 
}); 

我正試圖獲得的恆定值,在我的服務像下面,但我沒能得到任何東西。

app.service('MyService', function MyService($http, myConfig) { 

} 

什麼是正確的方法來獲得服務中的常量值?

+1

'myConfig'是不確定的或者是你得到了一些錯誤?我做了一個[jsFiddle](https://jsfiddle.net/The_Bear/jg0mmaqr/3/),我沒有任何問題注入常量到服務... –

+0

@ The.Bear我沒有通過myConfig在控制器。所以你將myConfig傳遞給控制器​​,然後控制器向前傳遞。這是唯一的方式還是更好的方法? – Happy

+0

有三種方法可以在服務中注入常量:內聯數組註釋,'$ inject'屬性註釋和隱式註釋。哪一個更好是一個意見問題。請參閱[AngularJS開發人員指南 - 依賴注入註釋](https://docs.angularjs.org/guide/di#dependency-annotation) – georgeawg

回答

0

您可以創建服務函數並通過服務函數返回常量值。或者,您只需將常數注入控制器並直接調用常量值即可。

var app = angular.module("myapp", []); 
 

 
app.constant("myConfig", { 
 
"url": "http://localhost", 
 
"port": "80" 
 
}); 
 

 
app.service('MyService', function MyService($http, myConfig) { 
 
    var vm = this; 
 
    
 
    vm.getConst = function(){ 
 
     return myConfig.url; 
 
    } 
 
}); 
 
app.controller("ctrl",function($scope,MyService,myConfig){ 
 
    //get it throuth servive 
 
\t 
 
    console.log(MyService.getConst()); 
 
    
 
    //get it from controller 
 
    
 
    console.log(myConfig.url); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myapp" ng-controller="ctrl"> 
 

 
</div>

+0

由於'getConst'函數省略了'返回'語句,該函數返回[原始值'undefined'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined)。 – georgeawg

+0

@georgeawg什麼是你的意思是省略返回。我更新它,'getConst'返回值 –

相關問題