javascript - Angular 如何设置从 json 文件读取的 IP 地址和端口作为其他 Controller 的服务

标签 javascript angularjs json

我使用服务从本地 json 文件读取 IP 地址和端口。我在我的“主”应用程序 Controller 中获取此信息。

1。如何提取 IP 地址和端口并将其保存在另一个服务中,以便另一个 Controller 可以使用它而无需再次读取配置文件?注意:没有html。我不想在用户界面上公开此信息。

2。在下面的代码中,json 数据是从服务中的 getConfig 调用返回的,但 $scope.restIpAddr 和 $scope.cfg 都在控制台日志中打印为未定义。

// service
angular.module('RDash')
     .service('configService', ['$http', function ($http) {
        var url = 'config.json';
        this.getConfig = function () {
            return $http.get(url).then(function(response) {
                return response.data;
            });
        };
}]);

//main controller
function MasterCtrl($scope, configService, $cookieStore) {

    $scope.restIpAddr = null;
    $scope.restPort = null;
    
    configService.getConfig().then(function (data) {
        $scope.cfg = data;
        $scope.restIpAddr = $scope.cfg.restIpAddr;
        console.log('MasterCtrl - getConfig - data: ', $scope.cfg);
        console.log('MasterCtrl - getConfig - restIpAddr: ', $scope.restIpAddr);
        }, function (error) {
            $scope.status = 'MasterCtrl - getConfig - Unable to load configuration data: ' + error.message;
        });
    
    console.log('MasterCtrl - getConfig - config: ', $scope.cfg);
    
    // snip

最佳答案

为什么不尝试设置一个“配置”值?

    angular.module('main').value('config', {
        port : '',
        ip : ''
    });

然后在主模块运行函数中设置这些值...

angular.module('main').run(['config', 'configService', function (config, configService) {
    configService.getConfig().then(function (response) {
        //Just in case that wasn't parsed before
        var dataObject = JSON.parse(response.data); 
        config.port = dataObject.restPort;
        config.ip = dataObject.restIpAddr;
    }, function (errorResponse) {
        //Handle error
    });
}]);

然后您可以将“config”值注入(inject)到您需要的Service或Controller中,然后访问该值。

希望有帮助。

关于javascript - Angular 如何设置从 json 文件读取的 IP 地址和端口作为其他 Controller 的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42494116/

相关文章:

javascript - 在angularjs中使用ng-repeat时如何将当前月份保持在列表顶部

angularjs - 将 vueJS 添加到现有的 Angular 应用程序中

javascript - 如何链接条件异步回调?

javascript - Ajax 脚本在打字时无法正常工作(keyup)

javascript - 将 json 数据中的文本显示到我的 html 文本框中

php - HTTP GET 中大数据破坏 json 对象

php - 全局 PHP 变量在同一文件内的函数内返回 NULL

javascript - 如何使用 Selenium 测试 flow.js 上传?

javascript - 使用 Highcharts 创建 marimekko 图表

javascript - 如何在 React Js 中显示数据到表格?