Javascript 如何将配置文件加载到角度对象

Javascript 如何将配置文件加载到角度对象,javascript,angularjs,node.js,socket.io,fs,Javascript,Angularjs,Node.js,Socket.io,Fs,我在nodeJS服务器上设置了一个简单的配置页面 4个输入字段来存储一些IP 那些领域注定要失败 var formApp = angular.module('formApp', []) .controller('formController', function($scope) { $scope.formData = {}; loadConfig(); $scope.$watchCollection('formData'

我在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对象的console.log,它似乎以一种奇怪的嵌套方式加载了值

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

这是4次刷新。因此,它似乎可以以某种方式工作,但无法正确加载它

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

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);
    });
});

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

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);
    });
});

万分感谢!我自己也不会想到的!非常好,几乎可以复制粘贴。万分感谢!我自己也不会想到的!非常好,几乎可以复制粘贴。