2016-08-20 110 views
0

我已經創建了一個非常基本的控制器來從SharePoint列表中提取數據,但它只會拉取基本標題和創建列。它不會拉我創建的任何列,這是我需要的。 SP本身是否有一個設置來聲明它可用於API?Angularjs Sharepoint Rest API顯示所有列

我已經使用的代碼關閉這個網站: http://www.c-sharpcorner.com/article/retrieve-sharepoint-list-items-using-angularjs-with-single-a/

如下所示:

var appVar = angular.module('listApp', []); 
 

 
appVar.controller("controller1", function($scope){  
 
    GetListItems($scope, "List1");  
 
}); 
 

 
function GetListItems($scope, listName){  
 
    $.ajax({  
 
     url: "https://example.com/sites/mysite/_api/web/lists/GetByTitle('"+listName+"')/items",  
 
     method: "GET",  
 
     async: false,  
 
     headers: { "Accept": "application/json;odata=verbose" },  
 
     success: function(data){  
 
      $scope.items = data.d.results;  
 
     },  
 
     error: function(sender,args){  
 
      console.log(args.get_message());  
 
     }  
 
    });  
 
}
<div ng-app="listApp">  
 
    <div id="App1" ng-controller="controller1">  
 
     <h1>First List Items</h1>  
 
     <div ng-repeat="item in items">  
 
      <p>{{item.Title}}</p>  
 
     </div>  
 
    </div>   
 
</div>

回答

2

SP.ListItemCollection資源端點

/_api/web/lists/getByTitle('<list title>')/items 

返回所有用於與一些限制爲用戶/查閱字段(出於性能原因)的列表項目的字段值:

在用戶的情況下/查閱字段僅查找ID將被默認檢索 。

在您的例子僅SP.ListItem.Title財產被打印出來,如果你想顯示所有返回列表項的值就可以實現這樣的:

<div ng-repeat="item in items">  
    <p>{{item.Title}}</p> 
    <p ng-repeat="(key, value) in item"> 
      {{ value }} 
    </p>  
</div> 

一些其他建議:

<div ng-app="spApp" ng-controller="TasksController" > 
     <table> 
     <tr ng-repeat="t in tasks"> 
      <td ng-repeat="(key, value) in t" ng-if="!value.hasOwnProperty('__deferred') && !value.hasOwnProperty('__metadata')"> 
        {{ value }} 
      </td> 
     </tr> 
     </table> 
</div> 

控制器

angular.module('spApp',[]) 

.controller('TasksController', function($scope,$http) { 
    $scope.tasks = []; 

    $scope.getListItems = function(listTitle) { 
     return $http({ 
       method : 'GET', 
       url : _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('" + listTitle + "')/items", 
       headers: { 'Accept':'application/json;odata=verbose' } 
     }); 
     } 

    $scope.getListItems("Tasks") 
      .success(function(data, status) { 
       $scope.tasks = data.d.results; 
      }) 
      .error(function(data, status) { 
       console.log("An error occured"); 
    }); 
}); 
+0

非常感謝。我的下一個問題是如何實現這個另一個Ajax,所以再次感謝它的巨大價值。 我已經看到一些其他的例子,人們在網址的末尾添加了Select標籤,這是否僅僅是限制返回的數據,而不是告訴它用k,d引用顯示哪些數據? – Andrew

+1

沒錯,'select'查詢選項用於指定應返回哪些屬性。 –

0

只是爲了進一步闡明一些關於這個,我已經注意到了,原來拉,其實是把我所有列,但他們均表現爲靜態名稱,而不是顯示名稱,所以我無法在顯示整個範圍時先解密它們。

有了這個,我可以通過ng-repeat使用內部參考來查看。