Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用两个json文件创建Angularjs过滤器_Javascript_Json_Angularjs_Html - Fatal编程技术网

Javascript 使用两个json文件创建Angularjs过滤器

Javascript 使用两个json文件创建Angularjs过滤器,javascript,json,angularjs,html,Javascript,Json,Angularjs,Html,我是新来的角度和我有一个过滤器的问题。 我有两个不同的json文件,如下所示: [ { "IdPers": "1067", "CognNome": "JANE SMITH", "Sex": "F" }, { "IdPers": "1093", "CognNome": "JOHN SMITH", "

我是新来的角度和我有一个过滤器的问题。 我有两个不同的json文件,如下所示:

    [
        {
            "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}">