win10系列:javascript模板绑定

关键词:

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 使用模板绑定数据的效果

win10系列:javascript页内导航

...在一个页面内根据需要加载其他页面的内容,在开发基于JavaScript的Windows应用商店应用时,可以使用WinJS.Navigation.navigate函数传递要加载的页面地址并使用PageControlNavigator控件加载其他页面的内容。WinJS.Navigation.navigate函数以一个包... 查看详情

win10系列:javascript图形

...canvas元素会在页面上生成一个矩形的位图画布,可以使用JavaScript在画布上实时绘制图形图像。在绘制图形时,需要先调用画布的getContext函数获取与该画布相关的用于绘制图形(如2D图形、3D图形)的对象,然后使用这个对象调用... 查看详情

win10系列:javascript动画4

上面介绍的动画效果是通过Windows动画库创建的,这里的旋转动画是通过设置页面元素的style对象的相关属性来创建,此动画的效果是将界面元素沿着指定的方向进行旋转。下面介绍style对象的几个常用属性。transitionProperty:获取... 查看详情

win10系列:javascript动画2

"重新定位"动画也是Windows动画库中的动画效果。"重新定位"动画的动画效果是指一个或一组元素移动到新的位置时,这些元素不是突然出现在新的位置,而是从一个位置移动到另一个位置。创建"重新定位"动画可以使用WinJS.UI.Anima... 查看详情

win10系列:javascript写入和读取文件

正如上面的内容中所提到的,文件保存选取器用于保存文件,通过Windows.Storage.Pickers命名空间中的FileSavePicker类的pickSaveFileAsync函数可以向指定的文件系统位置中保存一个文件。文件保存之后,还可以对其进行读写操作,如果是向... 查看详情

win10系列:javascript控件的使用

...的基本控件,如按钮和复选框;WinJS库控件是为开发基于JavaScript的Windows应用商店应用提供的新控件,如ListView、HtmlControl和PageControl等。下面首先介绍如何添加这两种类型的控件,然后介绍如何为控件注册事件处理函数和设计控... 查看详情

win10系列:javascript综合实例2

在项目中添加一个名为pages的文件夹,并在pages文件夹里面再添加一个名为mainPage的文件夹,接着在mainPage文件夹里添加一个"页面控制"项,命名为mainPage,添加完成之后会同时生成mainPage.html、mainPage.css和mainPage.js这三个文件。这里... 查看详情

win10系列:javascript动画3

"交叉进出"动画也是Windows动画库中的动画效果。"交叉进出"动画的动画效果是在应用程序界面上隐藏一个元素并同时在相同位置显示另一个元素的时候,被隐藏的元素渐消失在应用程序界面上,而将要显示的元素渐显示在应用程... 查看详情

win10系列:javascript页面导航

页面导航是在开发应用的过程中使用频率较高的技术,其中比较常用的导航方式有多页导航和页内导航,采用多页导航方式的应用程序包含一系列的页面,在一个页面中加入另一个页面的链接地址后,单击链接将跳转到指定页面... 查看详情

win10系列:javascript综合实例4

实现主页面和分类页面的之后,最后来看一下菜肴页面的实现,这个页面用于详细介绍某项菜肴或主食,如名称、图片和具体做法等。在pages文件夹里面添加一个名为foodDetail的文件夹,并在foodDetail文件夹里添加一个"页面控制"项... 查看详情

win10系列:javascript综合实例1

上面几个小节讲解了使用HTML5和JavaScript语言开发Windows应用商店应用时会用到的一些技术,本小节将前面介绍的知识融合在一起创建一个菜谱应用程序,帮助读者更进一步地理解和掌握这些知识。此菜谱应用程序主要的功能是介... 查看详情

win10系列:javascript动画1

在应用程序中使用动画会使应用显得更加生动,进而给用户带来良好的视觉效果。例如,当用户将某个项添加到列表时,新项不会立即出现在列表中,而是采用动画形式到达相应位置,并且列表中的其他项也采用动画形式移动到... 查看详情

win10系列:javascript多媒体

在应用程序的日常使用中,经常会使用多媒体播放器来播放多媒体文件,包括视频、音频等,因此对于开发者来说,学习多媒体播放技术对开发应用是很有帮助的。本小节主要介绍如何使用HTML5和JavaScrip实现播放本地视频。想要... 查看详情

win10系列:javascript获取文件和文件夹列表

在应用程序中有时可能需要获取用户库中的内容,以便执行相关的操作。如果要获取某个用户库中的内容,需要先获取到这个用户库,获得用户库可以通过Windows.Storage命名空间中的KnownFolders类的相应属性来实现,可用属性包括doc... 查看详情

win10系列:javascript访问文件和文件夹

...门基于C#语言的详细讲解,本节主要介绍如何使用HTML5和JavaScript开发具有文件操作功能的Windows应用商店应用,首先来了解一下用于对文件或文件夹进行操作的文件选取器。19.4.1文件选取器正如前面章节C#语言中所介绍的,文件选... 查看详情

访问 Javascript Html 模板并使用 Knockout.js 绑定数据

】访问JavascriptHtml模板并使用Knockout.js绑定数据【英文标题】:AccessJavascriptHtmlTemplateandBindDataWithKnockout.js【发布时间】:2013-01-1320:44:53【问题描述】:如何访问在整个站点中重复使用的javascript模板,并在javascript中执行此操作并将... 查看详情

如何将一系列日期绑定值映射/减少到 JavaScript / RXJS 中的运行总数?

】如何将一系列日期绑定值映射/减少到JavaScript/RXJS中的运行总数?【英文标题】:HowtoMap/reduceaseriesofdateboundvaluestoarunningtotalinJavaScript/RXJS?【发布时间】:2022-01-0502:15:55【问题描述】:我有一个observable,它发出带有键日期的测量... 查看详情

win10uwp开发系列:解决win10不同版本的style差异导致的兼容性问题

原文:Win10UWP开发系列:解决Win10不同版本的Style差异导致的兼容性问题最近在开发一个项目时,遇到了一个奇怪的问题,项目依赖的最低版本是10586,目标版本是14393,开发完毕发布到商店后,很多用户报无法正常加载页面。经查... 查看详情