惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

W
WeLiveSecurity
T
Tenable Blog
Project Zero
Project Zero
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
S
Schneier on Security
Scott Helme
Scott Helme
S
Securelist
Know Your Adversary
Know Your Adversary
Vercel News
Vercel News
IT之家
IT之家
V
V2EX
F
Fortinet All Blogs
Simon Willison's Weblog
Simon Willison's Weblog
K
Kaspersky official blog
博客园_首页
T
Tailwind CSS Blog
The GitHub Blog
The GitHub Blog
Spread Privacy
Spread Privacy
Microsoft Security Blog
Microsoft Security Blog
Cisco Talos Blog
Cisco Talos Blog
The Register - Security
The Register - Security
有赞技术团队
有赞技术团队
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Cyberwarzone
Cyberwarzone
Google DeepMind News
Google DeepMind News
The Hacker News
The Hacker News
L
LINUX DO - 热门话题
Hugging Face - Blog
Hugging Face - Blog
博客园 - 三生石上(FineUI控件)
A
Arctic Wolf
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
C
CXSECURITY Database RSS Feed - CXSecurity.com
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Privacy & Cybersecurity Law Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CERT Recently Published Vulnerability Notes
S
SegmentFault 最新的问题
AWS News Blog
AWS News Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
Apple Machine Learning Research
Apple Machine Learning Research
P
Proofpoint News Feed
The Cloudflare Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Vulnerabilities – Threatpost

博客园 - 名可真难起

CSOM创建Content Type并指定GUID SharePoint还原大体积内容数据库报空间错误的解决办法 SharePoint 2013—创建Master Page 通过SPWeb.EnsureUser将SPUser添加到网站 如何在页面中使用sharepoint中的富文本编辑器控件 通过编程的方式给列表项添加附件 SharePoint 2010 Visual Web Part发布后找不到文件的错误 SharePoint 2010通过Web Service读取和修改Excel文件 SharePoint 2010中Metadata Service 解决SharePoint2010中Excel刷新出错的问题 SharePoint 2007搜索网站开启匿名访问 SharePoint 2010: 取得浏览最多的网站 在Windows 7中如何用另一个用户运行程序 不仅仅是土豆 SharePoint 2010运行环境 最近比较懒 如何在ActionResult中返回XML类型 - 名可真难起 - 博客园 SharePoint 2010 Development Stack SharePoint 2010 Visual Web Part Demo--展示网站中的List.
SharePoint 2013: Knockout JS + Rest Service展示List数据
名可真难起 · 2013-08-16 · via 博客园 - 名可真难起

SharePoint 2013: Knockout JS + Rest Service展示List数据

前提: 本文假设阅读者已经对Knockout JS和SharePoint Rest Service有所了解。

在SharePoint取出List的数据并展示在页面上的方法有很多种。例如直接编辑页面,添加一个list view web part,或者添加一个Visual web part, 通过C#代码取得并展示,或者通过SharePoint Client Object Model取得数据等等。

本文采用的方法是通过SharePoint Rest Service取得数据并通过Knockout JS绑定到页面中。这种方法的好处是可以应用到SharePoint Sandbox solution中。在Sandbox solution中, C#代码是受到严格限制的,而JavaScript则没有这方面的限制。

在网站中创建了一个名为"WebSites"的List, 并在里面创建了一个名为"SiteURL"的列,该列为"Hyperlink"类型。

往List中添加几条数据,如下图所示:

至此准备工作已经完成,下一步就开始实际的编码。

首先要在页面中引用相关的JS, Knockout用到的有2个,再引用Jquery就可以了。

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.1.min.js"></script>

<script src="http://ajax.aspnetcdn.com/ajax/knockout/knockout-2.2.1.js"></script>

<script type="text/JavaScript" src="knockout.mapping-latest.js"></script>

页面中的HTML代码很简单,具体如下:

<div data-bind="foreach:Sites">

<a target="_blank" data-bind="attr: { href: SiteURL.Url()}" ><div data-bind="text:Title"></div></a>

</div>

<script>

BindWebSites();

    </script>

其中BindWebSites是我们自己定义的一个JS方法,用来通过Rest取得LIST中的数据并绑定到页面。详细定义如下:

function BindWebSites(){

$(document).ready(function () {

     var restUri ="http://[换成实际的网站地址]/_api/web/lists/getByTitle('WebSites')/items?$select=Title,SiteURL&$orderby=Created desc";

$.ajax({

type: 'GET',

url: restUri ,

dataType: 'json',

headers: {

'accept': 'application/json;odata=verbose',

'content-type': 'application/json;odata=verbose'

},

success: function (data) {

     AddSitesToPage(data);

}

     });

    });

}

function AddSitesToPage(data){

var ContactsModel = function (Sites) {

var self = this;

self.Sites= ko.mapping.fromJS(Sites);

self.lastSavedJson = ko.observable("");

};

ko.applyBindings(new ContactsModel(data.d.results));

}

页面展示效果如下:

其实JS和HTML代码都很简单,只是有几个需要注意的地方:

  1. 我们需要在页面上展示Title和SiteURL 2个字段即可,因为在Rest Service调用时使用了select=Title,SiteURL来取得这2个字段。

  2. 在绑定HTML数据时,对链接有些特殊处理:data-bind="attr: { href: SiteURL.Url()}"绑定的是SiteURL.Url()而不是SiteURL(). 可以通过监测返回的数据得知SiteURL是一个对象,而不是一个字段。

  3. 如果SiteURL为空,就会在绑定时报错。

    因为在HTML绑定时对SiteURL可进行如下处理:

<!-- ko if: SiteURL.Url -->

<a target="_blank" data-bind="attr: { href: SiteURL.Url()" ><div data-bind="text:Title"></div></a>

<!-- /ko -->

<!-- ko ifnot: SiteURL.Url -->

<div data-bind="text:Title"></div>

<!-- /ko -->

致力于SharePoint开发. QQ:28748451.