WinJS库模板提供了一种格式化显示多条数据的便捷方式,通过这种方式可以将模板与ListView或FlipView等控件结合使用以控制数据的显示格式。定义一个WinJS库模板的方法与定义WinJS库控件的方法相似:在页面中添加一个div元素,将div元素的data-win-control属性设置为WinJS.Binding.Template。定义WinJS库模板以后,需要在WinJS库模板内部添加控件以显示绑定的数据,WinJS库模板内部只能有一个根元素,当绑定多条数据时,需要在WinJS库模板内部首先定义一个根元素,然后在根元素内添加控件。下面通过一个示例来演示如何使用WinJS模板绑定数据并将数据在ListView控件中显示。

在Visual Studio 2012中新建一个JavaScript的Windows应用商店的空白应用程序项目,将其命名为BindingUsingTemplate。接着添加项目中用到的图片文件,在项目默认新建的文件夹images上单击右键,选择"添加"à"现有项",在本地文件夹中选择六张图片并添加到项目中。

完成添加图片的操作后,接下来打开default.js文件,在这个文件的匿名函数内"var activation = Windows.ApplicationModel.Activation;"语句的后面定义一个WinJS.Binding.List类的对象,并保存在变量foodDetail中用于定义数据源集合,向WinJS.Binding.List的构造函数传递一个参数数组,数组中包含菜肴名称和菜肴图片信息以对数据源集合进行数据初始化。代码片段如下所示:

var foodDetail = new WinJS.Binding.List([

{ name: "冰梅鸭掌", picture: "/images/冰梅鸭掌.jpg" },

{ name: "东北汆白肉", picture: "/images/东北汆白肉.jpg" },

{ name: "冬瓜盅", picture: "/images/冬瓜盅.jpg" },

{ name: "老黄瓜瘦肉汤", picture: "/images/老黄瓜瘦肉汤.jpg" },

{ name: "牛肉皮蛋粥", picture: "/images/牛肉皮蛋粥.jpg" },

{ name: "全丝烩鱼翅", picture: "/images/全丝烩鱼翅.jpg" }

]);

由于这里将定义WinJS.Binding.List类的对象的代码放在了default.js文件的匿名函数内,由于匿名函数中定义的变量为局部变量,不能直接使用在项目的其他文件中,为此在"app.start();"语句的后面声明一个命名空间,代码片段如下所示:

WinJS.Namespace.define("BindingUsingTemplate",{

foodDetailName: foodDetail

});

在上面的代码中,调用WinJS.Namespace.define函数声明了一个命名空间BindingUsingTemplate,在命名空间中添加了一个名为foodDetailName的成员,并将foodDetailName成员的值设置为变量foodDetail。

接下来打开default.html文件,在其中添加WinJS库模板和ListView控件,WinJS库模板用于设置数据的显示格式,而ListView控件用于显示数据。代码片段如下所示:

<body>

<div id="FoodTemplate" data-win-control="WinJS.Binding.Template">

<div class="itemStyle">

<img src="#" class="pictureStyle" data-win-bind="src: picture" />

<h4 class="titleStyle" data-win-bind="innerText: name"></h4>

</div>

</div>

<div data-win-control="WinJS.UI.ListView"

data-win-options="{itemDataSource: BindingUsingTemplate.foodDetailName.dataSource,

itemTemplate: FoodTemplate,

layout: { type: WinJS.UI.GridLayout }

}">

</div>

</body>

上面的代码将body元素中的内容分为两部分,第一部分定义了一个WinJS库模板,首先添加一个div元素,设置div元素的id属性值为FoodTemplate,并通过为div元素的data-win-control属性赋值WinJS.Binding.Template,添加一个WinJS库模板。接着在WinJS库模板内部添加一个img控件和一个文本控件,并将img控件的src属性与数据源中数据对象的picture属性相绑定,将文本控件的innerText属性与数据源中数据对象的name属性相绑定。

接下来在第二部分定义了一个ListView控件,首先添加了一个div元素,通过为div元素的data-win-control 属性赋值WinJS.UI.ListView定义一个ListView控件,并设置ListView控件的数据源为BindingUsingTemplate 命名空间下的foodDetail对象的dataSource属性的值。最后将ListView控件的模板设置为上面定义的id属性值为FoodTemplate的WinJS库模板,并将ListView控件的layout属性赋值为{ type: WinJS.UI.GridLayout },设置以网格布局方式显示数据。

为了控制界面元素的显示位置和外观,在default.css文件中设置相应的样式属性,代码片段如下所示:

/*设置class属性值为itemStyle的元素的大小、边距等属性*/

.itemStyle {

width: 282px;

height: 140px;

padding: 5px;

overflow: hidden;

display: -ms-grid;

}

/*设置class属性值为pictureStyle的元素的大小、边距、位置等属性*/

.itemStyle .pictureStyle {

width: 120px;

height: 120px;

margin: 10px;

-ms-grid-column: 1;

}

/*设置class属性值为titleStyle的元素的边距、位置等属性*/

.itemStyle .titleStyle {

margin: 5px;

-ms-grid-column: 2;

}

上面的代码分为三个部分,分别设计了菜肴整体信息、菜肴图片、菜肴名称的样式。

启动调试,可以看到在应用程序界面上以网格布局方式显示图片和文本,效果如图19-12所示。

图19-12 使用模板绑定数据的效果

转载于:https://www.cnblogs.com/finehappy/p/6645382.html

Win10系列:JavaScript 模板绑定相关推荐

  1. Win10系列:JavaScript 的 WinJS库

    WinJS 库是由 CSS 和 JavaScript 文件组成的.使用Visual Studio 2012新建一个JavaScript 的Windows应用商店的空白应用程序项目,在项目的引用管理器中 ...

  2. JavaScript事件绑定的方法说明 收藏

    JavaScript事件绑定的方法说明 收藏 事件使得客户端的 JavaScript 有机会被激活,并得以运行.在一个 Web 页面装载之后,运行脚本的唯一方式,就是响应系统或者用户的动作.虽然从第一 ...

  3. 前端模板引擎artTemplate---高性能JavaScript模板引擎

    关于artTemplate模板引擎的详细原理请移步高性能JavaScript模板引擎原理解析,本文只探讨如何使用.初学前端的人一般对于绑定数据都是使用原生js或者jquery来拼接字符串,此为hard ...

  4. 前端代码编码和设计规范系列——JavaScript编程规范

    1文档信息 条目 内容 项目编号 通用 项目名称 通用 标题 JavaScript编程规范 类别 规范文档 当前 试用草稿 摘要 当前版本 V1.0 日期 2015/11/9 作者 徐维坚(xuwei ...

  5. 视频教程-javascript零入门实战系列-JavaScript

    javascript零入门实战系列 7年php开发经验,国内某大型培训机构项目经理,曾授课程:php,ecshop二次开发,ThinkphpBootstrap商城,html,html5,css,css ...

  6. Knockout模板绑定

    目的 template绑定通过模板将数据render到页面.模板绑定对于构建嵌套结构的页面非常方便.默认情况, Knockout用的是流行的jquery.tmpl模板引擎.使用它的话,需要在安装页面下 ...

  7. 事半功倍系列 javascript

    清华大学出版的<事半功倍系列 javascript>,本人照着书敲出来的,有些翻译了一下.前几年看了一下,最近无事,重新翻了翻,很有帮助.本书应该有光盘的,但学校的书,光盘不知在哪.希望对 ...

  8. javascript晚绑定_JavaScript的应用,调用和绑定通过托管野餐来解释

    javascript晚绑定 by Kevin Kononenko 凯文·科诺年科(Kevin Kononenko) JavaScript的应用,调用和绑定通过托管野餐来解释 (JavaScript's ...

  9. 【JavsScript】推荐五款流行的JavaScript模板引擎

    摘要:Javascript模板引擎作为数据与界面分离工作中最重要一环,受到开发者广泛关注.本文通过开发实例解析五款流行模板引擎:Mustache.Underscore Templates.Embedd ...

最新文章

  1. 【经验】网络加速:pip
  2. java nextline_Java编程语言基础的9根支柱
  3. matlab ezplot hold,matlab中的ezplot函数
  4. Mysql 瓶颈优化
  5. ACM_贪心法_queue_Fence Repair
  6. 利用SIMULINK搭建一个16QAM调制解调收发系统
  7. Mysql count() 语句
  8. vue 右边跳转 实现左侧栏_Vue 后台管理项目8-侧边菜单的实现
  9. windows 路径
  10. Mac开发-NSTextView软回车转换为硬回车
  11. 常用计算机设备有哪几种,简述输入、输出设备功能,计算机中常用的输入、输出设备有哪几种?...
  12. Xman pwn level3 writeup
  13. 基于因果逻辑库的定性事件结果及结果方向性预测
  14. Cesium专栏-空间分析之剖面分析(附源码下载)
  15. 字符串的初始化(详解)
  16. linux 系统开发
  17. Python .lower()
  18. 缩略版muduo网络库(2):事件处理器 Chanel
  19. 2014.5.15小米发布会PPT精华版
  20. 【TS】10 多个 TypeScript 高级用法总结

热门文章

  1. 使用JavaScript和D3.js实现数据可视化
  2. vue 跨域:使用vue-cli 配置 proxyTable 实现跨域问题
  3. Maven项目添加FindBugs、PMD插件
  4. JS设置cookie,删除cookie
  5. 配置备份DHCP服务器(LINUX)
  6. Js中Proxy对象
  7. 里面的自带的字典在哪里_影视剪辑高清素材哪里找?4种方法教你,适合新手入门...
  8. 为什么我从Mac切换到Linux
  9. ffmpeg解码H.264视频数据,MFC播放视频
  10. 第二十七章:五姓七望