`
sillycat
  • 浏览: 2560728 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Front End Starter(3)knockout - Form and Post

    博客分类:
  • UI
 
阅读更多

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">&nbsp;</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-amd-helpers:构建可复用的Knockout模块》 在JavaScript的世界里,AMD(Asynchronous Module Definition)模式已经成为一种流行的方式,用于组织和加载模块化代码,尤其在大型项目中,它能有效...

    knockout-3.4.2下载

    knockout-3.4.2下载 一直研究knockout有兴趣的朋友一起

    前端项目-knockout-bootstrap.zip

    【前端项目-knockout-bootstrap.zip】是一个包含使用Knockout.js和Bootstrap框架构建的前端项目的压缩包。这个项目主要是为了展示如何将Knockout.js的强数据绑定功能与Bootstrap的UI组件结合,以创建功能丰富的、...

    前端项目-knockout-dragdrop.zip

    《前端项目:Knockout-Dragdrop 深度解析》 在当今的Web开发领域,前端技术日新月异,交互体验成为了评判一个网站或应用优劣的重要标准。其中,拖放(Drag and Drop)功能是提升用户体验的常用手段之一。本文将深入...

    knockout-3.3.0.min.js

    knockout-3.3.0.min.js源碼文件,通過[removed][removed],就可以直接引用,用於數據綁定

    前端项目-knockout-sortable.zip

    3. 整合优势:通过knockout-sortable,开发者无需关心排序后的DOM更新和数据模型同步,大大减少了手动操作,提高了代码的可维护性和开发效率。 四、实际应用 在开发复杂的Web应用时,如任务管理器、购物车或者日历...

    前端项目-knockout-validation.zip

    **前端项目-knockout-validation.zip** 是一个包含KnockoutJS验证插件的前端开发资源包,主要用于在基于KnockoutJS的项目中实现模型和属性的验证功能。KnockoutJS是一个流行的JavaScript库,它提供了MVVM(Model-...

    前端项目-knockout-postbox.zip

    《使用Knockout和Postbox实现前端项目中的组件通信》 在现代Web开发中,组件化已经成为构建大型、复杂应用的...在“前端项目-knockout-postbox”中,你将有机会亲身体验这种通信方式的魅力,并探索更多的实践可能性。

    Knockout-UI, 在KnockoutJS上,一个基于富UI组件.zip

    Knockout-UI, 在KnockoutJS上,一个基于富UI组件 用户界面是基于 Knockout 和 jQuery UI的UI组件的集合。这个项目的目标是集成一些有用的小部件,可以以由社区重用和扩展。我开始在 2010年月 中学习 Knockout,并...

    前端项目-knockout-paging.zip

    **前端项目-knockout-paging.zip** 是一个包含前端分页功能实现的代码包,主要基于Knockout.js库进行开发。Knockout.js是一个轻量级的数据绑定库,它帮助开发者实现MVVM(Model-View-ViewModel)模式,使得前端界面...

    前端项目-knockout-delegated-events.zip

    **前端项目-knockout-delegated-events** 在前端开发中,事件处理是用户交互的核心部分。Knockout.js 是一个流行的 JavaScript MVVM(Model-View-ViewModel)库,它简化了数据绑定和DOM操作。然而,原生 Knockout....

    单页应用框架knockout-spa.zip

    用Knockout, Require, Director, jQuery, Sugar搭建的单页程序(SPA Single Page Application)框架。 标签:knockout

    knockout-form-validation

    评估这是包含Oracle Cloud Commerce培训课程的模块2的最终项目的初始模板。... 您的工作是通过重构该模板中可用的静态代码来增加项目的交互性。 目标是通过执行CEP查询并在各自... 使用Knockout-validations验证表单,创

    knockout-master.zip

    "knockout-master.zip" 是一个包含Knockout源代码的压缩文件,Knockout是一个流行的JavaScript库,专为构建富交互式的Web应用程序而设计。它利用MVVM(Model-View-ViewModel)模式,帮助开发者轻松地管理DOM元素与...

    g5-knockout-dot:带有 KnockoutJS 和 dot 模板的简单模块基础

    #g5-knockout-dot.js 带有 KnockoutJS 和 dot 模板的简单模块基础###设置安装包并将其用作组件的脚手架 git clone https://github.com/MajorLeagueBaseball/g5-knockout-dot.git npm install###服务器服务器...

    knockout-2.2.0.js

    简化动态JavaScript ui通过应用模型-视图-视图模型(MVVM) 声明式绑定 容易副DOM元素与模型数据使用一个简洁、易读的语法 自动UI刷新 当你的数据模型的状态发生变化时,你的UI自动更新 依赖跟踪 隐式地设置链模型数据...

    前端项目-knockout-pre-rendered.zip

    **前端项目-knockout-pre-rendered** 这个前端项目的核心是使用Knockout.js库实现预渲染功能,旨在提高页面加载速度和用户体验。Knockout.js是一个轻量级、MVVM(Model-View-ViewModel)模式的JavaScript库,主要...

    前端项目-knockout-es5.zip

    **前端项目-knockout-es5.zip** 这个压缩包文件包含了一个使用Knockout.js库的前端项目,该库是基于ECMAScript 5规范构建的。Knockout.js是一款轻量级、强大的MVVM(Model-View-ViewModel)JavaScript框架,它使得...

    knockout-jsx:结合使用JSX和淘汰赛

    npm install --save knockout-jsx安装后, knockout-jsx支持多种类型的导入。ES6 import { registerJSXComponent } from 'knockout-jsx' ;普通JS const { registerJSXComponent } = require ( 'knockout-jsx' ) ;//...

Global site tag (gtag.js) - Google Analytics