我有以下模块名为EnvConfigurationService,js.erb:
#../angular/services/config/EnvConfigurationService,js.erb
angular.module('mgApp.services').factory('EnvConfigurationService', function () {
return {
getMySecretKey: function () {
return "<%= ENV['MY_SECRET_KEY'] %>";
}
}
});
目的是提供访问MY_SECRET_KEY&#39;来自不同的角度和常规js类。与userController.js上的以下内容类似:
angular.module('mgApp.controllers').controller('userController', ['$scope', '$http', 'EnvConfigurationService', function($scope, $http, EnvConfigurationService) {
var uri = EnvConfigurationService.getMySecretKey();
...
}]);
但是,返回的字符串始终为空。什么想法可能有什么不对/缺失?
提前致谢
答案 0 :(得分:3)
This website shows 4 great ways to pass info from Rails to Angular
选项编号3指出,如果您要使用这样的插值,您可能需要调用此示例中显示的.html_safe
。
itemsApp.service('itemsAppInitializer', function(){
return <%= @item.to_json.html_safe %>;
});
在我看来,如果你愿意的话,还有另外一种方法可以解决这个问题。我会在rails中创建一个路由,在响应中返回env变量。
然后,只要服务需要首次提供env变量,您就可以使用$http.get()
并在服务调用中添加cache: true
选项来从路由/控制器获取该数据,并且仅需要一次获取它。