首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在AngularJS中保存和使用配置设置的最佳方式

在AngularJS中保存和使用配置设置的最佳方式
EN

Stack Overflow用户
提问于 2014-06-17 22:06:25
回答 4查看 4.2K关注 0票数 4

我是AngularJS的新手,正在构建一个学习它的应用程序。我的应用程序调用REST API,现在我将主机名硬编码到应用程序中。我想在应用程序设置中设置它(也许以后可以在某个地方配置它)。我想我应该从一个常量开始。它应该像这样放到我的app.js中吗?如果是这样,我也不确定使用$routeProvider将其添加到.config设置的语法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 (function () {

        // Define module and add dependencies inside []
        var app = angular.module("haClient", ["ngRoute"]);

        app.constant('hostname', 'http://192.192.192.192:8176');

        app.config(function ($routeProvider) {
            $routeProvider
                // Register routes
                // Main route
                .when("/main", {
                    templateUrl: "main.html",
                    controller: "MainController"//,
                    //activeTab: 'home'
                })
                // Device List 
                .when("/devices", {
                    templateUrl: "devicelist.html",
                    controller: "DeviceListController"
                })
                // Device details (param is device name)
                .when("/device/:devicename", {
                    templateUrl: "device.html",
                    controller: "DeviceController"
                })
                // Invalid URL's get sent back to main route
                .otherwise({ redirectTo: "/main" });
        }); // End App Config

    }());

这是需要使用它的模块(从控制器调用):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(function () {

    var deviceCtrl = function ($http) {
        var getDevices = function () {
            return $http.get("http://192.192.192.192:8176/devices.json/")
                          .then(function (response) {
                              return response.data;
                          });
        };

        // get details and return a promise
        var getDeviceDetails = function (deviceName) {
            return $http.get("http://192.192.192.192:8176/devices/" + deviceName + ".json/")
                          .then(function (response) {
                              return response.data;
                          });
        };


        // Public API
        return {
            getDeviceDetails: getDeviceDetails,
            getDevices: getDevices
    };
    };

    var module = angular.module("haClient");

}());

有没有人能告诉他们设置和获取它的最佳方法?

谢谢

EN

回答 4

Stack Overflow用户

发布于 2014-06-17 22:15:41

目前,我通过使用模板在后端构建根.html文件来做到这一点。例如,在node.js中使用doT模板,我将其放在我的其他js下面,包括:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!-- load any templated constants -->
<script>
    angular.module('mymod').constant('globals', {
        api: '{{=it.api}}'
    });
</script>

这样,我的后端就可以计算出客户端需要指向的逻辑。为了在另一个服务或控制器中使用该值,您只需按名称注入常量:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
angular.module('somemod', []).factory('myservice', ['globals', function(globals){
    // use globals.api or what ever you set here for example
}]);
票数 0
EN

Stack Overflow用户

发布于 2014-06-18 03:50:22

进行配置的最佳位置是在提供程序和配置块中。

提供者公开了一个API,它允许您在将服务注入到控制器和指令之前对其进行配置。

假设您有一个名为myService的服务,您希望将其注入到控制器函数中,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 app.controller('ctrl', function($scope, myService) { ...});

myService负责通过web调用检索数据。让我们进一步假设您希望使用根URL htt://servername/配置您的服务,因为所有调用都将共享相同的主机名。

您可以这样定义您的myServiceProvider:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 app.provider('myService', function(){
        var webapiurl;
        this.setWebServiceUrl = function (url) {
                webapiurl = url;
        }

        // the injector will call the $get function to create the singleton service that will be injected
        this.$get = function( /*injectables*/) {
             return {
                      getData: function() {... Use webapiurl ...}
              }
        }
   });

然后在您的配置函数中,配置您的提供者:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  app.config(function(myServiceProvider){
          myServiceProvider.setWebServiceUrl('htt://servername');

  });

最后,您可以将服务注入到可以注入的任何位置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 app.controller('ctrl', function($scope, myService) {
         $scope.data = myService.getData();
  });
票数 0
EN

Stack Overflow用户

发布于 2014-06-18 19:28:26

我无法获得所提供的答案来工作(没有理由认为它们不会)。这是我所做的。

我的主app.js (常量部分)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(function () {

    // Define module and add dependencies inside []
    var app = angular.module("haClient", ["ngRoute"]);

    //constants
    app.constant('mySettings', {
        baseURL:      'http://192.192.192.192:8176',
        otherSetting: 'XYZ'
    });


    app.config(function ($routeProvider) {
        $routeProvider
            // Register routes
            // Main route
            .when("/main", {
                templateUrl: "main.html",
                controller: "MainController"//,
                //activeTab: 'home'
            })
            // Device List 
            .when("/devices", {
                templateUrl: "devicelist.html",
                controller: "DeviceListController"
            })
            // Device details (param is device name)
            .when("/device/:devicename", {
                templateUrl: "device.html",
                controller: "DeviceController"
            })
            // Invalid URL's get sent back to main route
            .otherwise({ redirectTo: "/main" });

    }); // End App Config

}());

在我的服务中(添加mySettings作为依赖项,然后使用mySettings.baseURL):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(function () {

     var deviceCtrl = function ($http, $log, mySettings) {

         $log.info("DeviceCtrl - baseURL: " + mySettings.baseURL);

         // get device list and return a promise
         var getDevices = function () {
            return $http.get(mySettings.baseURL + "/devices.json")
                          .then(function (response) {
                              return response.data;
                          });
        };

        // get details and return a promise
        var getDeviceDetails = function (deviceName) {
            $log.info("DeviceCtrl - Getting device info for " + deviceName);
            return $http.get(mySettings.baseURL + "/devices/" + deviceName + ".json")
                          .then(function (response) {
                              return response.data;
                          });
        };


        // Public API
        return {
            getDeviceDetails: getDeviceDetails,
            getDevices: getDevices
    };
    };

     var module = angular.module("haClient");
     module.factory("deviceCtrl", deviceCtrl);

}());

我当然不是专家(因为无法得到有效的答案),我也不确定这种方法是否有任何缺点。它让我可以继续我的项目,并学习更多关于Angular的知识,所以我继续使用它。

问候

标记

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24274070

复制
相关文章
Openlayers2卷帘功能的实现
在WebGIS开发中,经常会有用户提需求,要实现卷帘功能,卷帘功能主要是实现两张图之间的对比。在前文中,讲到了openlayers3以及Arcgis for js中卷帘的实现,在本文讲述如何在openlayers2中实现卷帘功能。
牛老师讲GIS
2018/10/23
1.5K0
Openlayers2卷帘功能的实现
openlayers之selectfeature
在本文叙述如何在openlayers中实现鼠标经过某一对象时,对象高亮;点击某一对象时,弹出该对象的信息。重点为OpenLayers.Layer.Vector和OpenLayers.Control.SelectFeature,下面开始讲解。
牛老师讲GIS
2018/10/23
1.6K0
openlayers之selectfeature
手机端实现打印功能
1、  打印代理PC,使用Spring轮询机制,每隔一定时间,通过HTTPClient,向服务器发出查询待打印队列的请求。
week
2018/08/27
1.8K0
WordPress 添加网页打印功能
网页页面打印功能方便我们快速链接打印机,Wordpress方面有很多插件,今天何先生在这里介绍简单代码就能实现的方法。
空木白博客
2019/04/23
1.8K0
OpenLayers入门(二)
好久不见,距离OpenLayers入门第一篇已经过了很久,为什么迟迟没有后续呢,主要有两个原因,一是因为近期项目里使用地图的部分比较少,二是因为很多时候即使功能做出来了,但是还是不能完全理解,不是很明白的东西除了贴代码之外也写不了啥,其实第一篇也是很基础很简单的,但是意外的是看的人是最多的,这让我意识到可能即使是贴一下代码对一些人也是有帮助的,这就是这一篇的主要目的,可能有一些地方会看不懂,但是不要问,问我也不知道,如果你恰好了解的话十分欢迎在评论里分享,感谢~
街角小林
2022/06/15
2.8K0
OpenLayers入门(二)
openlayers实现画圆
通过OpenLayers.Control.DrawFeature和OpenLayers.Handler.Point实现在地图上画圆心。
牛老师讲GIS
2018/10/23
3.3K0
openlayers实现画圆
c#实现打印功能
c#实现打印功能,可以设置纸张大小,字体和颜色等         /// <summary>         /// 打印的按钮         /// </summary>         /// <param name="sender"></param>         /// <param name="e"></param>         private void btnPrint_Click(object sender, EventArgs e)         {            
跟着阿笨一起玩NET
2018/09/20
3.5K0
OpenLayers入门(一)
OpenLayers(https://openlayers.org/)是一个用来帮助开发Web地图应用的高性能的、功能丰富的JavaScript类库,可以满足几乎所有的地图开发需求。
街角小林
2022/06/15
5K0
OpenLayers入门(一)
element ui实现前台打印功能
      在项目中经常会使用打印功能,这次我们来看一下element ui实现打印功能,后台采用springboot作为后台接口方法,后台抽数据就不用看了,大家都明白,抽出来需要打印的数据就好,然后传给前台json数据。前台element ui来处理打印工作。下面咱们看一下前台如何做一个打印功能。
十分钟空间
2022/08/17
2.9K0
HTML打印准考证用JS在html页面实现打印功能
用JS在html页面实现打印功能 做项目时,有在网页实现全局和局部打印的需求,百度许久,现总结如下: 打印方式一: 1.首先在head里面加入下面一段js代码: <script language="javascript"> function preview(fang) { if (fang < 10){ bdhtml=window.document.body.innerHTML;//获取当前页的html代码 sprnstr="<!--startprint"+fang+"-->";//设置打印开始区域
SingYi
2022/07/14
9.9K0
HTML打印准考证用JS在html页面实现打印功能
利用bootstrap-table插件自带的打印功能打印表格
文章目录 1、前端代码: 2、前端页面: 1、表格数据展示 2、点击打印按钮之后: 3、插件下载地址: 4、碰到的bug 1、前端代码: <link href="https://unpkg.com/bootstrap-table@1.18.2/dist/bootstrap-table.min.css" rel="stylesheet"> <script src="https://unpkg.com/bootstrap-table@1.18.2/dist/bootstrap-table.min.js"
别团等shy哥发育
2023/02/25
2K0
利用bootstrap-table插件自带的打印功能打印表格
OpenFeign超时控制和日志打印功能
@FeignClient(value = "CLOUD-PAYMENT-SERVICE")    value的值是8001程序名称
一个风轻云淡
2022/11/13
8590
OpenFeign超时控制和日志打印功能
Python Print打印计时器功能
我们仔细看看print的参数:print(value,sep=’ ‘,end=’\n’,file=sys.stdout,flush=False)
用户7886150
2020/11/25
1.9K0
Vite + Vue3 + OpenLayers
本文案例使用 Vite 搭建项目,在 Vue 3 的基础上使用 OpenLayers 。
德育处主任
2022/04/15
2.8K0
Vite + Vue3 + OpenLayers
Echart在Openlayers的应用
echart,一个由百度前端发起的canvas国产类库(官网:http://echarts.baidu.com/index.html)。echart其实是在canvas类库zrender的基础上做的主题图库,优点有数据驱动,图例丰富,功能强大,支持数据拖拽重计算,数据区域漫游等功能,不论是从使用便捷程度、美观程度等方面都是不错的选择,在本文讲述如何在Openlayers中结合echart实现地图统计图的展示。
牛老师讲GIS
2018/10/23
2.6K0
Echart在Openlayers的应用
openlayers实现在线编辑
在前面有篇博文讲述了基于Arcgis for js和wkt实现在线数据的采集和编辑功能,在本文讲述如何在openlayers实现类似的功能。上一篇博文的地址为:
牛老师讲GIS
2018/10/23
3.5K0
openlayers实现在线编辑
PPT如何打印奇数页和偶数页?获取更多打印功能?
1、点击[视图] 2、点击[大纲视图] 3、点击[文本] 4、点击[复制] 5、点击[开始菜单] 6、点击[Word] 7、点击[布局] 8、点击[纸张方向] 9、点击[横向] 10、点击[文本] 11、点击[粘贴] 12、点击[文本] 13、点击[文件] 14、点击[打印] 15、点击[打印所有页] 16、点击[仅打印奇数页]
裴来凡
2022/05/28
4.9K0
PPT如何打印奇数页和偶数页?获取更多打印功能?
openlayers实现多图显示
概述: 本文讲述在openlayers中如何实现多图联动。 思路: 1、判断鼠标在哪个地图上; 2、添加该地图的地图移动事件; 3、设置另外一个地图的bound为该地图的。 代码: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>openlayers map</title> <link rel="stylesheet" href="http://localhost/olapi/theme
牛老师讲GIS
2018/10/23
1.3K0
点击加载更多

相似问题

如何在画布中(重新)填充圆形- requestAnimationFrame - HTML,JS

111

缩放元素时出现不必要的模糊效果

10

缩放HTML画布元素

14

用背景图像填充HTML画布中的圆形

14

标记在缩放时“改变”位置

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文