Pau*_*der 0 javascript fs node.js socket.io angularjs
我在nodeJS服务器上设置了一个简单的配置页面.
4个输入字段用于存储一些IP.
那些领域是必然的
var formApp = angular.module('formApp', [])
.controller('formController', function($scope) {
$scope.formData = {};
loadConfig();
$scope.$watchCollection('formData',function() {
saveConfig($scope);
});
});
Run Code Online (Sandbox Code Playgroud)
模型中的每个更改都会调用saveConfig(),它会将配置保存在服务器上:
function saveConfig($scope) {
socket.emit('save_config', {config: $scope.formData});
}
Run Code Online (Sandbox Code Playgroud)
这似乎有效.服务器正确打印接收对象的内容,并且保存过程中没有错误.
现在我想在每次打开页面时将配置加载到角度模型中.
loadConfig()告诉服务器加载config.json,解析它,并将其发送到浏览器:
socket.on('load_config', function(data) {
console.log("[INFO] Config received:");
angular.element(document.getElementById('config')).scope().formData = data;
});
Run Code Online (Sandbox Code Playgroud)
但它似乎不起作用..在页面刷新时,所有字段都是空的.
另外,$ scope.formData = {}; 清空对象,因此配置立即被覆盖.我怎么能阻止这个?(我不知道这是否真的是整个问题)我的方法有什么特别的错误吗?
谢谢
更新:
似乎没有完全错误......在刷新时,输入是空的,但是如果我开始输入和console.log的formData对象,它似乎以一种奇怪的,嵌套的方式加载了值
{"config":{"config":{"config":{"config":{},"ip2":"tzfrzftztrf","ip3":"ztu6tzzt6"},"ip2":"hhhkkizbi"},"ip2":"hhkkkkööö"},"ip3":"h"}
Run Code Online (Sandbox Code Playgroud)
这是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);
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
817 次 |
| 最近记录: |