Javascript 使用两个json文件创建Angularjs过滤器
我是新来的角度和我有一个过滤器的问题。 我有两个不同的json文件,如下所示:Javascript 使用两个json文件创建Angularjs过滤器,javascript,json,angularjs,html,Javascript,Json,Angularjs,Html,我是新来的角度和我有一个过滤器的问题。 我有两个不同的json文件,如下所示: [ { "IdPers": "1067", "CognNome": "JANE SMITH", "Sex": "F" }, { "IdPers": "1093", "CognNome": "JOHN SMITH", "
[
{
"IdPers": "1067",
"CognNome": "JANE SMITH",
"Sex": "F"
},
{
"IdPers": "1093",
"CognNome": "JOHN SMITH",
"Sex": "M"
}
]
以及:
[
{
"IdPers": "1067",
"DescRuol": "Membro"
},
{
"IdPers": "163",
"DescRuol": "Membro"
}
]
我放了一个有用的东西:
我必须使用文件“OutCommissioni.json”中的字段“DescRuol”创建一个过滤器,这两个文件具有相同的字段“id”。我原以为我可以像加入一样做,但我做不到任何有效的东西!感谢您的帮助。编辑:忽略此答案-我误解了问题。在我计算出OP在此答案的评论中真正想要的内容后,提交了新的答案和最终细节 从每个文件获取数据后,通过将相关的不同字段指定给公共属性,并将两组数据附加到单个数组,从而规范化属性差异
var App = angular.module('App', []);
App.controller("OutAnCtrl", function ($http, $scope) {
$scope.data = [];
$http.get('OutAnagrafica.json')
.success(function (data) {
data.forEach(function(item) {
item.name = item.CognNome;
});
$scope.data.push.apply($scope.data, data);
});
$http.get('OutCommissioni.json')
.success(function (data) {
data.forEach(function(item) {
item.name = item.DescRuol;
});
$scope.data.push.apply($scope.data, data);
});
$scope.clearBox = function () {
$scope.filter = "";
};
});
最后,将中继器更改为使用合并的数据对象“data”和公共属性名
<tr data-ng-repeat="Person in data|filter:filter">
<td>{{Person.IdPers}}</td>
<td>{{Person.name}}</td>
<td>{{Person.Sex}}</td>
</tr>
编辑:我想这就是你要找的?
DescRuol:
对于未来的读者,请忽略我的另一个答案-我误解了这个问题,并在评论中用OP算出了细节
要使具有多个选项的选择框使用相同的值,首先不要使用id作为选择框将使用的直接值,而是直接引用对象:
<select data-ng-options="item as item.DescRuol for item in OutCommissioni" id="DescRuol" data-ng-model="filter.IdPers" class="form-control input-sm"></select>
这里的工作示例:这是一个可能的替代方案吗?您能将这两个文件重写为一个吗?谢谢您的回复,您太棒了!也许我不能很好地解释,但我想要的是一个带有字段“DescRuol”的过滤器,如果我选择“membro”筛选结果将是Jane Smith,因为他们具有相同的ID。我不知道您是否理解,对不起我的英语!编辑:我使用ui utils中的“唯一”筛选来删除选项中的重复项,但当我有[{“IdPers”:“163”,“DescRuol”:“Presidente”},{“IdPers”:“163”,“DescRuol”:“Membro”}]过滤器不能正常工作,因为它只能过滤一个描述。唯一是问题??有办法让过滤器正常工作?啊,好的。我想我现在明白你的问题了。听起来你好像在试图用非唯一值填充一个下拉选择框?如果是的话,这样做根本没有意义。是的,但对于fi来说就是一个例子“性”它工作得很好。这是因为您试图为该字段提供两个截然不同的选项。对于同一个值可能多次出现的选项列表,选择框不是正确的用户界面选择。除非您想在下拉列表中将两个选项合并为一个选项,两者都使用一个值左右方法?例如,在你上面的例子中,在选择中有一个选项“Presidente或Membro”,这两个选项都有idPers 163?
<label for="DescRuol">DescRuol:</label>
<select data-ng-options="item.IdPers as item.DescRuol for item in OutCommissioni" id="DescRuol" data-ng-model="filter.IdPers" class="form-control input-sm"></select>
<select data-ng-options="item as item.DescRuol for item in OutCommissioni" id="DescRuol" data-ng-model="filter.IdPers" class="form-control input-sm"></select>
<tr data-ng-repeat="Person in OutAnagrafica|filter:{Sex:filter.Sex,IdPers:filter.IdPers.IdPers}">