如何在 AngularJs 控制器或服务中访问 POJO 属性
Posted
技术标签:
【中文标题】如何在 AngularJs 控制器或服务中访问 POJO 属性【英文标题】:how to access POJO property in AngularJs Controller or Service 【发布时间】:2017-06-10 05:27:50 【问题描述】:我的AppConfig
java 类中有一个配置属性serverName
,它从cloud config client
获取值。这个serverName
值用于Java
类和AngularJS Services
。这个serverName
对于不同的环境有不同的值。
我的问题
目前我正在使用 pcf spring cloud config
和具有不同值的不同配置文件。所以 Java
类访问 serverName
没有问题,但在 AngularJS service
我是 manually changing
将 serverName
值部署到各自的 environment
值之前将其部署到各自的环境。
我的问题
有没有办法将AppConfig
的serverName
属性访问到我的AngularJS Service
中?
AppConfig Java
@EnableConfigurationProperties
@ConfigurationProperties
@RefreshScope
@Configuration
public class AppConfig
@Value("$external.server.name")
private String serverName;
application.yml
external:
server:
name: localName
my_service.js
angular.module('myApp').factory('myService', ['$http', '$q', '$window', function($http, $q, $window)
var serverName = 'localName';
// for each env deployment make sure the developer changes the value to respective env value, if not the service will fail
.....
【问题讨论】:
为什么客户端需要服务器名? 从angularJS服务调用serverName上的rest服务 @KursadGulseven 实际上我正在使用从 my_service.js 到Rest Controller
的 $http.get('serverName')
进行休息呼叫,所以如果在本地,那么它将是 $http.get('http://localhost:8080'), once I deploy this to qat it will be the qaturl. Is there anyway to make rest call from
js` 到 java rest controller
?
【参考方案1】:
您可以创建自己的 REST 控制器,例如 /config,它返回服务器名称以及客户端可能需要的任何其他内容。 在此控制器中,您可以像在 AppConfig 中一样注入服务器名称。
更简单 如果您已经有一个控制器,在您需要服务器名称之前由 angular 调用,您可以使用相关值设置一个像“x-server-name”这样的标头。
【讨论】:
【参考方案2】:Stefan 的回答对您想做的事情很有用。但是,如果它是您的应用程序服务器,则不需要服务器地址。 $http.get('api/getUser')
与 $http.get(servername + '/api/getUser')
相同。如果您在客户端需要除“服务器名称”之外的任何其他服务器端属性;那么您可以应用 Stefan 的答案。
【讨论】:
以上是关于如何在 AngularJs 控制器或服务中访问 POJO 属性的主要内容,如果未能解决你的问题,请参考以下文章
如何在angularjs ui-router中的状态之间共享$ scope数据?
如何在 angularjs ui-router 中的状态之间共享 $scope 数据?