2016-08-20 70 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使用内部参考来查看。