Front End Starter(3)knockout - Form and Post
1. Single Page Applications
Building a webmail client
Example is here
http://learn.knockoutjs.com/WebmailExampleStandalone.html#Inbox
2. Custom Binding
http://learn.knockoutjs.com/#/?tutorial=custombindings
3. Loading and Saving Data
http://learn.knockoutjs.com/#/?tutorial=loadingsaving
Task List Example
Loading the Data from Server Side
<h3>Tasks</h3>
<form data-bind="submit: addTask">
Add task: <input data-bind="value: newTaskText" placeholder="What needs to be done?" />
<button type="submit">Add</button>
</form>
<ul data-bind="foreach: tasks, visible: tasks().length > 0">
<li>
<input type="checkbox" data-bind="checked: isDone" />
<input data-bind="value: title, disable: isDone" />
<a href="#" data-bind="click: $parent.removeTask">Delete</a>
</li>
</ul>
You have <b data-bind="text: incompleteTasks().length"> </b> incomplete task(s)
<span data-bind="visible: incompleteTasks().length == 0"> - it's beer time!</span>
<form action="/tasks/saveform" method="post">
<input type="hidden" name="tasks" data-bind="value: ko.toJSON(tasks)" />
<button type="submit">Save</button>
</form>
function Task(data) {
this.title = ko.observable(data.title);
this.isDone = ko.observable(data.isDone);
}
function TaskListViewModel() {
// Data
var self = this;
self.tasks = ko.observableArray([]);
self.newTaskText = ko.observable();
self.incompleteTasks = ko.computed(function() {
return ko.utils.arrayFilter(self.tasks(), function(task) {
return !task.isDone()
});
});
//Loading
$.getJSON("/tasks", function(allData) {
var mappedTasks = $.map(allData, function(item) {
return new Task(item)
});
self.tasks(mappedTasks);
});
// Operations
self.addTask = function() {
self.tasks.push(new Task({ title: this.newTaskText() }));
self.newTaskText("");
};
self.removeTask = function(task) { self.tasks.remove(task) };
}
ko.applyBindings(new TaskListViewModel());
Sending the Post Form
<form action="/tasks/saveform" method="post">
<input type="hidden" name="tasks" data-bind="value: ko.toJSON(tasks)" />
<button type="submit">Save</button>
</form>
Another Way to Post Form
<button data-bind="click: save">Save</button>
function TaskListViewModel() {
// Data
var self = this;
self.tasks = ko.observableArray([]);
self.newTaskText = ko.observable();
self.incompleteTasks = ko.computed(function() {
return ko.utils.arrayFilter(self.tasks(), function(task) { return !task.isDone() });
});
…snip...
self.save = function() {
$.ajax("/tasks", {
data: ko.toJSON({ tasks: self.tasks }),
type: "post", contentType: "application/json",
success: function(result) { alert(result) }
});
};
}
I love knockoutJS.
References:
http://learn.knockoutjs.com/#/?tutorial=collections
http://learn.knockoutjs.com/#/?tutorial=webmail
underscore
http://sillycat.iteye.com/blog/1862248
相关推荐
《深入理解knockout-amd-helpers:构建可复用的Knockout模块》 在JavaScript的世界里,AMD(Asynchronous Module Definition)模式已经成为一种流行的方式,用于组织和加载模块化代码,尤其在大型项目中,它能有效...
knockout-3.4.2下载 一直研究knockout有兴趣的朋友一起
【前端项目-knockout-bootstrap.zip】是一个包含使用Knockout.js和Bootstrap框架构建的前端项目的压缩包。这个项目主要是为了展示如何将Knockout.js的强数据绑定功能与Bootstrap的UI组件结合,以创建功能丰富的、...
《前端项目:Knockout-Dragdrop 深度解析》 在当今的Web开发领域,前端技术日新月异,交互体验成为了评判一个网站或应用优劣的重要标准。其中,拖放(Drag and Drop)功能是提升用户体验的常用手段之一。本文将深入...
knockout-3.3.0.min.js源碼文件,通過[removed][removed],就可以直接引用,用於數據綁定
3. 整合优势:通过knockout-sortable,开发者无需关心排序后的DOM更新和数据模型同步,大大减少了手动操作,提高了代码的可维护性和开发效率。 四、实际应用 在开发复杂的Web应用时,如任务管理器、购物车或者日历...
**前端项目-knockout-validation.zip** 是一个包含KnockoutJS验证插件的前端开发资源包,主要用于在基于KnockoutJS的项目中实现模型和属性的验证功能。KnockoutJS是一个流行的JavaScript库,它提供了MVVM(Model-...
《使用Knockout和Postbox实现前端项目中的组件通信》 在现代Web开发中,组件化已经成为构建大型、复杂应用的...在“前端项目-knockout-postbox”中,你将有机会亲身体验这种通信方式的魅力,并探索更多的实践可能性。
Knockout-UI, 在KnockoutJS上,一个基于富UI组件 用户界面是基于 Knockout 和 jQuery UI的UI组件的集合。这个项目的目标是集成一些有用的小部件,可以以由社区重用和扩展。我开始在 2010年月 中学习 Knockout,并...
**前端项目-knockout-paging.zip** 是一个包含前端分页功能实现的代码包,主要基于Knockout.js库进行开发。Knockout.js是一个轻量级的数据绑定库,它帮助开发者实现MVVM(Model-View-ViewModel)模式,使得前端界面...
**前端项目-knockout-delegated-events** 在前端开发中,事件处理是用户交互的核心部分。Knockout.js 是一个流行的 JavaScript MVVM(Model-View-ViewModel)库,它简化了数据绑定和DOM操作。然而,原生 Knockout....
用Knockout, Require, Director, jQuery, Sugar搭建的单页程序(SPA Single Page Application)框架。 标签:knockout
评估这是包含Oracle Cloud Commerce培训课程的模块2的最终项目的初始模板。... 您的工作是通过重构该模板中可用的静态代码来增加项目的交互性。 目标是通过执行CEP查询并在各自... 使用Knockout-validations验证表单,创
"knockout-master.zip" 是一个包含Knockout源代码的压缩文件,Knockout是一个流行的JavaScript库,专为构建富交互式的Web应用程序而设计。它利用MVVM(Model-View-ViewModel)模式,帮助开发者轻松地管理DOM元素与...
#g5-knockout-dot.js 带有 KnockoutJS 和 dot 模板的简单模块基础###设置安装包并将其用作组件的脚手架 git clone https://github.com/MajorLeagueBaseball/g5-knockout-dot.git npm install###服务器服务器...
简化动态JavaScript ui通过应用模型-视图-视图模型(MVVM) 声明式绑定 容易副DOM元素与模型数据使用一个简洁、易读的语法 自动UI刷新 当你的数据模型的状态发生变化时,你的UI自动更新 依赖跟踪 隐式地设置链模型数据...
**前端项目-knockout-pre-rendered** 这个前端项目的核心是使用Knockout.js库实现预渲染功能,旨在提高页面加载速度和用户体验。Knockout.js是一个轻量级、MVVM(Model-View-ViewModel)模式的JavaScript库,主要...
**前端项目-knockout-es5.zip** 这个压缩包文件包含了一个使用Knockout.js库的前端项目,该库是基于ECMAScript 5规范构建的。Knockout.js是一款轻量级、强大的MVVM(Model-View-ViewModel)JavaScript框架,它使得...
npm install --save knockout-jsx安装后, knockout-jsx支持多种类型的导入。ES6 import { registerJSXComponent } from 'knockout-jsx' ;普通JS const { registerJSXComponent } = require ( 'knockout-jsx' ) ;//...