// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= 在 HTML5 应用程序中使用 KnockoutJS 的视频
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: 在 HTML5 应用程序中使用 KnockoutJS 的视频 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, 在 HTML5 应用程序中使用 KnockoutJS 的视频

在本视频教程系列中，我们将了解如何使用 jQuery 和 KnockoutJS 构建客户端 HTML5 应用程序。我们将学习将 DOM 元素绑定到数据模型，定义事件处理程序，以及从 JSON 和 REST 服务提取数据。

作者：John Jullion-Ceccarelli

|===
|
=== 下载/观看全图：

* link:http://bits.netbeans.org/media/knockout1-basic-bindings.mp4[+Knockout 第 1 部分 - 基本绑定+] (15 MB)
* link:http://bits.netbeans.org/media/knockout2-json.mp4[+Knockout 第 2 部分 - JSON+] (12 MB)
* link:http://bits.netbeans.org/media/knockout3-click-handler.mp4[+Knockout 第 3 部分 - 单击处理程序+] (19 MB)
 |


== Knockout 第 1 部分 - 基本绑定


== Knockout 第 2 部分 - JSON


== Knockout 第 3 部分 - 单击处理程序

 

|
link:/about/contact_form.html?to=3&subject=Feedback:%20Video%20of%20Using%20KnockoutJS%20in%20an%20HTML5%20Application[+发送有关此教程的反馈意见+]
 
|===


== 相关链接

* link:html5-gettingstarted.html[+HTML5 应用程序入门+]
* link:https://blogs.oracle.com/netbeanswebclient/[+NetBeans Web 客户端博客+]
* link:../../trails/php.html[+PHP 和 HTML5 学习资源+]
