2015-10-27 274 views
4

我使用AngularJS Google Maps工作,需要在模块config部分(类似于this one的问题)中配置api_key如何将变量传递给AngularJs config

我的问题是有关配置AngularJs模块

这是my test pen

var app = angular.module('myapp', []) 
 
    /* 
 
    // HERE ????? 
 
    // I try to pass a value from the HTML (server side) 
 

 
    .config(function($window){ 
 
    console.log($window.memKey); 
 
    }) 
 

 
    */ 
 
    .controller('MainCtrl', ['$scope', '$window', function($scope, $window) { 
 
    $scope.name = $window.memName; 
 
    $scope.city = $window.memCity; 
 

 
    $scope.getMember = function(id) { 
 
     console.log(id); 
 
    }; 
 
    }]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<script type="text/javascript"> 
 
    var memKey = 'bb7de28f-0f89-4f14-8575-d494203acec7'; 
 
    var memName = 'John'; 
 
    var memCity = 'New-York'; 
 
</script> 
 

 
<div ng-app="myapp" ng-controller="MainCtrl"> 
 
    Member name: {{name}} <br> 
 
    Member city: {{city}} 
 
</div>

如何能够休养生息从HTML(服务器)侧memKey价值?

回答

1

根据你的声明,你的memKey处于一个可访问的范围内。

只是做

app.config(function(){ 
    console.log(memKey); 
    }) 

snippet

+0

魔法!你是对的...现在有一种更正确的方法可以将***值传递给配置函数 – Serge

+0

你可以将提供者传递给配置函数,它们可以是服务,值或常量。最后两个可能对你有用。请参阅https://gist.github.com/demisx/9605099或每一个,然后看看哪一个适合您。可能是一个常数。然后你可以在config函数中使用它们作为参数 –

+0

如果“configuratle”列表示它们在'.config'中不可用,因为示例在控制器上,而不是在配置函数中...... – Serge

1

您可以访问现有的角模块,如果你不使用注射阵列。之后,你有参考,你可以声明常量,例如:

<script type="text/javascript"> 
var app = angular.module('myapp'); 
app.constant('memKey', 'bb7de28f-0f89-4f14-8575-d494203acec7'); 
app.constant('memName', 'John'); 
app.constant('memCity', 'New-York'); 
//Or do them as one config object 
</script> 

-

.config(['memKey', 'memName','memCity' function(memKey, memName, memCity) { 
    }]); 
+0

注意。值不应该在**'.controller' **中使用,而应该在**'.config' **部分使用 – Serge

+0

您可以将常量注入到配置中,它们将首先被初始化。更新我的答案以反映您的实际问题。 –

+0

我试过了,没有工作:http://codepen.io/anon/pen/dYeGbN?editors=101 – Serge