博客地址:http://blog.csdn.net/FoxDave

本篇接上一讲,介绍一下web部件项目中的代码。

下面首先列举一下项目中的一些关键文件。

Web部件类

HelloWorldWebPart.ts定义了web部件的主要入口。Web部件类HelloWorldWebPart继承了BaseClientSideWebPart类。任何一个客户端web部件都应该继承它来被定义为有效的web部件。构造函数如下所示:

  1. public constructor(context: IWebPartContext) {
  2. super(context);
  3. }

BaseClientSideWebPart实现了构建一个web部件的最小功能。这个类也提供了许多参数来验证和访问只读属性如displayMode,web部件属性,web部件上下文,web部件instanceId和web部件domElement等。

注意web部件类是被定义来接收IHelloWorldWebPartProps这个属性类型的。

该属性类型作为一个接口被单独定义在IHelloWorldWebPartProps.ts文件中。

这个属性定义是用来为你的web部件定义自定义属性类型的,之后会在web部件属性面板进行详细介绍。

Web部件渲染方法

Render方法中提供了web部件应该渲染到的DOM元素的位置。该方法用来将web部件渲染到DOM元素。在HelloWorldweb部件中,DOM元素被设置为了一个DIV元素。方法参数包含了显示模式(Read或Edit)和web部件的配置属性(如果有的话),方法声明可以看上面的一张图,除了一个收尾的大括号基本上都在里面了。

这个模型很灵活,web部件可以在任意的JavaScript框架中构建然后加载到DOM元素中。下面是如何加载React组件来代替HTML文本的例子:

  1. render(): void {
  2. let e = React.createElement(TodoComponent, this.properties);
  3. ReactDom.render(e, this.domElement);
  4. }

注意:Yeoman SharePoint生成器允许你在向项目中添加新web部件时选择React作为框架。

配置web部件属性面板

属性面板同样定义在HelloWorldWebPart类中,propertyPaneSettings这个属性是用来定义属性面板的。

当属性被定义完之后,你可以通过使用this.properties.<property-value>来访问他们,就像在render方法中那样调用:

  1. <p class="ms-font-l ms-fontColor-white">${this.properties.description}</p>

阅读Integrating property pane with a web part这篇文章来了解更多关于属性面板和属性面板字段类型信息,在之后的文章中我也会进行介绍。

替用下面的代码替换propertyPaneSettings方法,这段代码展示了如何添加文本类型之外的类型。

  1. protected get propertyPaneSettings(): IPropertyPaneSettings {
  2. return {
  3. pages: [
  4. {
  5. header: {
  6. description: strings.PropertyPaneDescription
  7. },
  8. groups: [
  9. {
  10. groupName: strings.BasicGroupName,
  11. groupFields: [
  12. PropertyPaneTextField('description', {
  13. label: 'Description'
  14. }),
  15. PropertyPaneTextField('test', {
  16. label: 'Multi-line Text Field',
  17. multiline: true
  18. }),
  19. PropertyPaneCheckbox('test1', {
  20. text: 'Checkbox'
  21. }),
  22. PropertyPaneDropdown('test2', {
  23. label: 'Dropdown',
  24. options: [
  25. { key: '1', text: 'One' },
  26. { key: '2', text: 'Two' },
  27. { key: '3', text: 'Three' },
  28. { key: '4', text: 'Four' }
  29. ]}),
  30. PropertyPaneToggle('test3', {
  31. label: 'Toggle',
  32. onText: 'On',
  33. offText: 'Off'
  34. })
  35. ]
  36. }
  37. ]
  38. }
  39. ]
  40. };
  41. }

替换完之后会提示一些错误,因为我们增加了新的属性字段,需要从框架中导入。定位到web部件代码类的顶部,将下面的内容添加到import部分的from '@microsoft/sp-client-preview'中:

PropertyPaneCheckbox,

PropertyPaneDropdown,

PropertyPaneToggle

完整的import部分的代码如下所示:

  1. import {
  2. BaseClientSideWebPart,
  3. IPropertyPaneSettings,
  4. IWebPartContext,
  5. PropertyPaneTextField,
  6. PropertyPaneCheckbox,
  7. PropertyPaneDropdown,
  8. PropertyPaneToggle
  9. } from '@microsoft/sp-client-preview';

格式化(快捷键为Alt+Shift+F)并保存文件。接下来将这些属性添加到IHelloWorldWebPartProps接口中来映射我们刚才添加的字段。

打开IHelloWorldWebPartProps.ts文件,将代码替换为下面的内容:

  1. export interface IHelloWorldWebPartProps {
  2. description: string;
  3. test: string;
  4. test1: boolean;
  5. test2: string;
  6. test3: boolean;
  7. }

保存文件,切换回HelloWorldWebPart.ts文件。

添加完web部件属性之后,就可以像之前调用description属性那样的方式进行调用了,如:

  1. <p class="ms-font-l ms-fontColor-white">${this.properties.test2}</p>

如果要设置属性的默认值,你需要更新web部件清单的属性包,打开文件HelloWorldWebPart.manifest.json,将属性部分(properties)修改为下面的样子:

  1. "properties": {
  2. "description": "HelloWorld",
  3. "test": "Multi-line text field",
  4. "test1": true,
  5. "test2": "2",
  6. "test3": true
  7. }

Web部件清单

HelloWorldWebPart.manifest.json文件定义了web部件元数据如版本、id、显示名、图标和描述。每个web部件都应该包含这个清单。

到这里,代码的自定义部分都全部做完了,下一讲我们将看一下定义之后的效果。



SharePoint Framework 构建你的第一个web部件(二)的更多相关文章

  1. SharePoint Framework 构建你的第一个web部件(一)

    博客地址:http://blog.csdn.net/FoxDave SharePoint客户端web部件是出现在SharePoint页面的控件,但却是在浏览器本地运行的.他们是SharePoint ...

  2. SharePoint Framework 构建你的第一个web部件(三)

    博客地址:http://blog.csdn.net/FoxDave 本篇接上一讲,我们一起来看一下如何部署和测试本地开发的web部件. 在SharePoint中预览web部件 SharePoint ...

  3. SharePoint每日小贴士Web部件

    SharePoint每日小贴士Web部件 项目描写叙述         此Web部件从指定SP自己定义列表或一个选定的 RSS源选择一个随机项目.并显示一张图片.标题和一个Tip.         适 ...

  4. SharePoint Framework 企业向导(十)

    博客地址:http://blog.csdn.net/FoxDave 接上一讲 SharePoint Framework部署范围 对于SharePoint Framework解决方案,只有一个部署范围: ...

  5. SharePoint Framework 把你的客户端web部件连接到SharePoint

    博客地址:http://blog.csdn.net/FoxDave 把你的web部件连接到SharePoint来访问SharePoint中的功能和数据,为终端用户提供更完整的体验.本篇会基于之前构 ...

  6. SharePoint Framework 在web部件中使用已存在的JavaScript库 - JavaScript库的格式

    博客地址:http://blog.csdn.net/FoxDave JavaScript库格式 不同的JavaScript库的编译和打包方式各不相同.一些是以模块的方式打包的,而另一些是以纯脚本运行在 ...

  7. SharePoint Framework 在web部件中使用已存在的JavaScript库 - 捆绑打包和外部引用

    博客地址:http://blog.csdn.net/FoxDave 在构建SPFx客户端web部件时,你可以使用公网已有的JavaScript库来构建强大的解决方案.但是在使用的时候你需要考虑你引用的 ...

  8. SharePoint Framework 把你的客户端web部件部署到经典的SharePoint页面

    博客地址:http://blog.csdn.net/FoxDave 本节介绍如何把客户端web部件部署到SharePoint服务端页面.我们将继续使用之前的工程. 将HelloWorld的web部 ...

  9. SharePoint Framework 配置Office 365开发者租户

    博客地址:http://blog.csdn.net/FoxDave 你需要一个Office 365开发者租户来使用预览版SharePoint Framework构建和发布客户端web部件.你的租户 ...

随机推荐

  1. Android -------- MVC,MVP 和 MVVM 架构设计模式

    MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用.它本身很容易理解,但是要讲清楚,它与衍生的 MVP 和 MVVM 架构的区别就不容易了. 一.MVC MV ...

  2. 四则运算web最终版

    经过若干时间的奋战,终于完成了web版四则运算程序.团队成员:井小普.张贺. 设计思想: 在之前的程序基础上两人结合开发web系统. 首先,进行登录注册界面的编写,不同用户,对应不同的错题库,答题记录 ...

  3. C++ leetcode Longest Substring Without Repeating Characters

    要开学了,不开森.键盘声音有点大,担心会吵到舍友.今年要当个可爱的技术宅呀~ 题目:Given a string, find the length of the longest substring w ...

  4. oracle 常用字符串函数

    select  initcap('guodongdong') from dual;                                  /返回字符串并将字符串的第一个字母变为大写;  s ...

  5. IOS中position:fixed弹出框中的input出现光标错位的问题

    解决方案是 在弹框出现的时候给body添加fixed <style type="text/css"> body{ position: fixed; width: 100 ...

  6. vector list map set等容器某些函数的使用区别

    map, set, vector erase的正确使用方法 一.erase 的用法区别 STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector .deque); 另一类是以不 ...

  7. php对于url提交数据的获取办法

    $url = Request::getUri();//获取当前的url $arr = parse_url($url); //$arr_query = convertUrlQuery($arr['que ...

  8. centos6.5+python2.7+flask+apache+mod-wsgi部署

    flask部署,使用的是centos6.5,python2.7,版本很重要.基本步骤如下: 一.创建虚拟环境,创建目录把项目拷进去 二.安装mod-wsgi和apache easy_install m ...

  9. Resharper插件的使用

    一.Resharper设置 1.1 智能提示 安装完毕后,IDE 的智能提示(Intellisense)便会默认使用 Resharper 的提示,不知道为什么,我一直不太喜欢它的提示.改过来,是在Op ...

  10. 用老毛桃U盘安装:[3]Ghost版Win7系统

    用老毛桃自动安装Ghost版Win7的步骤: 1,到网上先下载Ghost版Win7映像文件到硬盘,我放到的是U盘,盘符为Z,如果你愿意,可直接放到硬盘即可,放到硬盘安装速度会快一点. 2,把制作好的老 ...