AngularJS-ng表内行的重复 AngularJS-ng repeat&$http.get

AngularJS-ng表内行的重复 AngularJS-ng repeat&$http.get,angularjs,angularjs-ng-repeat,Angularjs,Angularjs Ng Repeat,编辑:尝试使用唯一,但也无效: <table class="table" ng-controller="fetchData"> <tr ng-repeat="elements in rawData.value"> <th ng-repeat="(key, value) in elements | unique:'key'"> {{ke

编辑:尝试使用唯一,但也无效:

<table class="table" ng-controller="fetchData">
    <tr ng-repeat="elements in rawData.value">
        <th ng-repeat="(key, value) in elements | unique:'key'">
            {{key}}
        </th>
        <td ng-repeat="element in elements">
            {{ element }}
        </td>
    </tr>
</table>

{{key}}
{{element}}
我正在使用ng repeat用外部信息填充表格,但我正在努力填充标题。我找到了一个提取密钥的示例:

<td ng-repeat="(key, element) in elements">

然而,这对我没有帮助,因为我应该只填写一次th,在数据上,而不是在它旁边。我还尝试添加一个额外的ng重复,但没有成功

查看$http.get和ODATA源代码-是否有任何方法一次用所有可用数据填充表?或者在任何我能读到哪些代币被接受的地方(谷歌搜索时没有找到任何信息)?现在我最多只能获取11个元素,而且我不允许像现在这样将令牌添加到URL中。有没有更好的方法获取数据?如有任何建议,请告知我是否需要更多信息。代码如下:

<html>
  <head>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <script src="https://code.jquery.com/jquery-3.0.0.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js" integrity="sha384-cs/chFZiN24E4KMATLdqdvsezGxaGsi4hLGOzlXwp5UZB1LY//20VyM2taTB4QvJ" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js" integrity="sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm" crossorigin="anonymous"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/ODataResources/1.0.25/odataresources.min.js"></script>
    <link rel="stylesheet" href="/css/style.css">
  </head>

<script>
    const BASE_URL = 'http://services.odata.org/V3/OData/OData.svc/';

    function getParameterByName(name, url) {
        if (!url) url = window.location.href;
        name = name.replace(/[\[\]]/g, "\\$&");
        var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
            results = regex.exec(url);
        if (!results) return null;
        if (!results[2]) return '';
        return decodeURIComponent(results[2].replace(/\+/g, " "));
    }

    var app = angular.module('getData', []);
    app.controller('fetchLinks', function($scope, $http) {
        $http.get(BASE_URL)
        .then(function(response) {
            $scope.rawLinks = response.data;
        });
    });
    app.controller('fetchData', function($scope, $http) {
        let dynamicContent = getParameterByName('q');
        console.log(BASE_URL+dynamicContent);
        $http.get(BASE_URL+dynamicContent)
        .then(function(response) {
            $scope.rawData = response.data;
        });
    });
</script>

常数基函数http://services.odata.org/V3/OData/OData.svc/';
函数getParameterByName(名称、url){
如果(!url)url=window.location.href;
name=name.replace(/[\[\]]/g,\\$&);
var regex=new RegExp(“[?&]”+name+”(=([^&#]*)和|#|$),
结果=regex.exec(url);
如果(!results)返回null;
如果(!results[2])返回“”;
返回组件(结果[2]。替换(/\+/g,”);
}
var app=angular.module('getData',[]);
app.controller('fetchLinks',函数($scope,$http){
$http.get(基本URL)
.然后(功能(响应){
$scope.rawLinks=response.data;
});
});
app.controller('fetchData',函数($scope,$http){
让dynamicContent=getParameterByName('q');
日志(基本URL+动态内容);
$http.get(基本URL+dynamicContent)
.然后(功能(响应){
$scope.rawData=response.data;
});
});

{{element}}
要重复多行,请使用:


这避免了计算多个
ng if
表达式的所有开销。它还假设
rawData.value
数组中的每个对象都有相同的键。

那么您的问题只在表头上?(
)一个页面上应该只有一个
ng app
指令。
ng app=“links”
将被忽略。@Sajjad Shahi:是的,我想在中显示键值。我尝试在代码中现有的基础上使用(key,element)进行额外的ng repeat,但仍然无法获取密钥,只能获取重复的数据。@georgeawg:谢谢,不应该在那里,我现在已经编辑过了。但我不知道只有一个,谢谢你提供的信息。:)谢谢,实际上我只是在另一个问题()上看这个函数,但我在第一次尝试时并没有让它工作。您的代码几乎达到了我想要的效果,因此我在“ng repeat start”(ng重复开始)行中添加了一个ng if=“$first”-现在就完美了!谢谢!:)谢谢你的澄清!:)
  <body ng-app="getData">
        <div class="container main-container">
                <div class="row">
                    <div class="col menu">
                        <nav class="navbar navbar-expand-lg navbar-light bg-light">
                            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
                                <span class="navbar-toggler-icon"></span>
                            </button>
                            <div class="collapse navbar-collapse" id="navbarNav">
                            <ul>
                                <div ng-controller="fetchLinks">
                                    <li class="nav-item" ng-repeat="element in rawLinks.value">
                                        <a class="nav-link" href="?q={{ element.url }}">{{ element.name }}</a>
                                    </li>
                                </div>
                            </ul>
                          </div>
                        </nav>
                    </div>
                </div>
                
                <div class="row">
                    <div class="col-md-12 content">
                        <table class="table" ng-controller="fetchData">
                            <tr ng-repeat="elements in rawData.value">
                                <td ng-repeat="element in elements">
                                    {{ element }}
                                </td>
                            </tr>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </body>
</html>
<table class="table" ng-controller="fetchData">
    <tr ng-repeat-start="elements in rawData.value">
        <th ng-repeat="(key, value) in elements>
            {{key}}
        </th>
    </tr>
    <tr ng-repeat-end>
        <td ng-repeat="element in elements">
            {{ element }}
        </td>
    </tr>
</table>
<table class="table" ng-controller="fetchData">
    <tr>
        <th ng-repeat="(key, value) in rawData.value[0]">
            {{key}}
        </th>
    </tr>
    <tr ng-repeat="elements in rawData.value">
        <td ng-repeat="element in elements">
            {{ element }}
        </td>
    </tr>
</table>