有没有办法从位于Web服务器外部的angularjs读取属性文件?
就像在java中部署的属性文件一样,但是我们可以在我们的项目中将这些文件作为filter.properties读取,这样任何解决方案都在angularJS中。
我试过这样但是未定义。
filter.properties:
key1=value1
key2=value2
sampleController.js
var app = angular.module('sampleApp', []);
app.controller('sampleController', function($scope, $http) {
$http.get('filter.properties').then(function (response) {
console.log('a is ', JSON.stringify(response.data.key1));
});
});
答案 0 :(得分:5)
有几种方法可以访问angularjs中的属性文件。
与每个文件属性文件一样,文件扩展名为.properties。
由于java属性文件是由=
在一行中分隔的键值对。
因此,我们可以通过迭代属性文件中的每一行并将其与=
符号分开并将其存储为javascript对象来将属性文件转换为javascript对象,这将有助于快速访问它。
这是它的javascript实现
function extractProperties(propertiesFileContents){
var keyValuePairs =propertiesFileContents.split("\n");
properties ={}
for (i = 0; i < keyValuePairs.length; i++) {
var keyValueArr=keyValuePairs[i].trim().split("=");
var key=keyValueArr[0];
var value=keyValueArr[1];
properties[key]=value
}
return properties;
}
根据您的代码,我在这里添加plunker希望这可以帮助您
答案 1 :(得分:2)
Samuel J Mathew的解决方案对我有用,但是我必须处理的属性文件在文件中有多个空行,加上注释掉的行,有时在=
符号周围带有空格。因此,我必须添加一些检查以处理这些情况。修改后的结果是这样,希望对使用更复杂的属性文件的人有用:
function extractProperties(data){
const keyValuePairs = data.split("\n");
properties = {}
for (var i = 0; i < keyValuePairs.length; i++) {
const keyValuePair = keyValuePairs[i].trim();
if (!keyValuePair || keyValuePair[0] === '#') {
continue;
}
const keyValueArr = keyValuePair.split("=");
const key = keyValueArr[0].trim();
const value = keyValueArr[1].trim();
properties[key] = value
}
return properties;
}