【问题标题】:how to load config file to an angular Object如何将配置文件加载到角度对象
【发布时间】:2015-06-01 02:05:40
【问题描述】:

我在我的 nodeJS 服务器上设置了一个简单的配置页面。

4 个输入字段来存储一些 IP。

这些字段绑定到

var formApp = angular.module('formApp', [])
.controller('formController', function($scope) {
    $scope.formData = {};
    loadConfig();                          
    $scope.$watchCollection('formData',function() {
        saveConfig($scope);
    });
});

模型中的每次更改都会调用 saveConfig(),它将配置保存在服务器上:

function saveConfig($scope) {
    socket.emit('save_config', {config: $scope.formData});
}

这似乎有效。服务端正确打印接收到的对象内容,保存过程没有错误。

现在我想在每次打开页面时将配置加载到角度模型中。

loadConfig() 告诉服务器加载 config.json,解析它,然后发送到浏览器:

socket.on('load_config', function(data) {
    console.log("[INFO] Config received:");
    angular.element(document.getElementById('config')).scope().formData = data;
});

但它似乎不起作用..在页面刷新时,所有字段都是空的。

此外,$scope.formData = {};清空对象,因此配置立即被覆盖。我怎样才能防止这种情况? (我不知道这是否真的是整个问题) 我的方法有什么严重的问题吗?

谢谢

更新:

似乎没有完全错... 刷新时,输入为空,但如果我开始输入并控制台记录 formData 对象,它似乎以一种奇怪的嵌套方式加载了值

{"config":{"config":{"config":{"config":{},"ip2":"tzfrzftztrf","ip3":"ztu6tzzt6"},"ip2":"hhhkkizbi"},"ip2":"hhkkkkööö"},"ip3":"h"}

这是 4 次刷新。所以它似乎以某种方式工作,但没有正确加载它

【问题讨论】:

    标签: javascript angularjs node.js socket.io fs


    【解决方案1】:

    您可以创建用于加载配置的服务并将其注入到您的模块中

    var formApp = angular.module('formApp', [])
    formApp.service('LoadConfigService', function($http) {
       return({
          loadConfig: function() {
          var promise = $http.get('config.json').then(function (response) {
            return response.data;
          });
    
          return promise;
        }});
    });
    .controller('formController', function($scope,LoadConfigService) {
        $scope.formData = {};
        LoadConfigService.loadConfig().then(function(data) {
       //Action After response
      });                         
        $scope.$watchCollection('formData',function() {
            saveConfig($scope);
        });
    });
    

    【讨论】:

    • 感谢一千次!我自己不会想到的!非常好,几乎可以使用复制和粘贴。
    猜你喜欢
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 2010-10-16
    • 2011-05-25
    • 2018-10-06
    • 1970-01-01
    相关资源
    最近更新 更多