我是棱角分明的新手,我遇到过滤器问题。 我有两个不同的文件json:
[
{
"IdPers": "1067",
"CognNome": "JANE SMITH",
"Sex": "F"
},
{
"IdPers": "1093",
"CognNome": "JOHN SMITH",
"Sex": "M"
}
]
和: [
{
"IdPers": "1067",
"DescRuol": "Membro"
},
{
"IdPers": "163",
"DescRuol": "Membro"
}
]
我把一个有效的Plunker:http://plnkr.co/edit/1xkyxRallRGtj83fSteg?p=preview
我必须创建一个带有“DescRuol”字段的过滤器,该字段位于文件“OutCommissioni.json”中,这两个文件具有相同的字段“id”。我以为我可以像加入一样做但我不能做出有用的东西!谢谢你的帮助
答案 0 :(得分:0)
编辑:忽略这个答案 - 我误解了这个问题。在我在这个答案的评论中找出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>
更新示例:http://plnkr.co/edit/03rwNY7eLX9i9VCTHz7Z?p=preview
编辑:我可能误解了,你可能不需要合并这些属性。关键部分是使用Array.push.apply将两个数组附加到单个数组
// Create initial array
$scope.data = [];
// Append some arrays
$scope.data.push.apply($scope.data, [1,2,3]);
$scope.data.push.apply($scope.data, [4,5,6]);
// $scope.data will now contain [1,2,3,4,5,6]
编辑:我认为这就是你要找的东西? http://plnkr.co/edit/jvyXlpv2iBh2n4pZ1miv?p=preview
<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>
答案 1 :(得分:0)
对于未来的读者,请忽略我的其他答案 - 我误解了这个问题,并在那里的评论中与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>
&#34; item as item.DescRuol
&#34;将使用对象本身作为模型值,而不仅仅是id值。
接下来,而不是使用&#34; filter
&#34;对象直接在过滤器中提供一个新对象,其中包含过滤器对象所需的值:
<tr data-ng-repeat="Person in OutAnagrafica|filter:{Sex:filter.Sex,IdPers:filter.IdPers.IdPers}">