- 浏览: 2160471 次
- 性别:
- 来自: 合肥
文章分类
- 全部博客 (401)
- Agile (16)
- Apache Commons (3)
- Architecture (8)
- DB.MongoDB (5)
- DB.Mysql (3)
- DB.Oracle (34)
- DirectoryService (1)
- DotNet (1)
- English (3)
- Groovy (0)
- Html (28)
- Java (67)
- Java.Aixs (7)
- Java.Cache (2)
- Java.jPBM (1)
- Java.Resin (6)
- Java.Spring (4)
- Java.Struts2 (5)
- Java.Tomcat (16)
- Javascript (45)
- Javascript.Google Map (2)
- Javascript.Jquery (8)
- Life (15)
- Maven&Ant (4)
- Network (5)
- OS.Linux (45)
- OS.Windows (10)
- OS.Windows.Office (1)
- PlayFramework (15)
- Python (28)
- Reading notes (11)
- Security (13)
- Server.Apache (3)
- Server.Nginx (7)
- Test (6)
- Tool (15)
- Work.Solution (15)
- Other (20)
- SSO&CAS&Identity (13)
最新评论
-
hutuxiansheng123:
防火墙、Iptables、netfilter/iptables、NAT 概述 -
dacoolbaby:
非常棒的正则表达式,非常适用。万分感谢。
用python分析nginx的access日志 -
loot00:
您好! 我也遇到了相同的错误信息。我是用f_link_lob ...
LOB variable no longer valid after subsequent fetch -
feihangchen:
@OnApplicationStop public clas ...
Play framework 1.2.3 Jobs定时任务、异步任务、引导任务、触发任务、关闭任务 -
洞渊龙王:
谢谢了
www.w3.org被qiang导致logback报错:Connect reset
和服务器交互数据:
Knockout 是一纯javascript库,它可以与任何能发送和接收JSON数据的服务器进行交互。
从服务器取得数据:使用$.getJSON或者$.ajax从服务器端取得JSON数据,然后更新viewmodel。注意:你并不是在服务器下载完数据后才执行ko.applyBindings操作。不需要在从服务器下载数据完毕后重新进行绑定操作,因为当数据下载完毕后,Knockout 会自动根据viewmodel的状态来更新相应的UI.
提交数据到服务器:
绑定:
在MVVM解释器中,bindings绑定是把用户的视图view和viewmodel关联起来,bindings就是中间人,它执行双向更新:
Knockout 有一个灵活的,综合的内置绑定集合(包含如text, click, foreach等),同时你也可以使用少量代码来完成自定义的bindings 。
要自定义binding:
1,给ko.bindingHandlers增加新的绑定属性,然后实现下面2个回调方法
2,init:在绑定刚开始的时候被调用,一般用来设置初始状态或者注册事件处理器
3,update:当关联的data发生变化的时候被调用,一般用来更新data相应的DOM
自定义fade binding例子:
也可以集成第三方web组件,如jquery UI,参考:http://learn.knockoutjs.com/#/?tutorial=custombindings
Knockout 是一纯javascript库,它可以与任何能发送和接收JSON数据的服务器进行交互。
从服务器取得数据:使用$.getJSON或者$.ajax从服务器端取得JSON数据,然后更新viewmodel。注意:你并不是在服务器下载完数据后才执行ko.applyBindings操作。不需要在从服务器下载数据完毕后重新进行绑定操作,因为当数据下载完毕后,Knockout 会自动根据viewmodel的状态来更新相应的UI.
提交数据到服务器:
- 方法1,简单地使用Html from控件,在控件内部放要提交到服务器的JSON的值(放一个隐藏域,其值通过toJSON方法取到,data-bind="value: ko.toJSON(tasks)"),然后再放置一个Submit按钮。如下:type="submit"
- 方法2,使用ajax方法,提交需要的数据给服务器,然后服务器处理。如下:self.save
- 3,客户端删除数据更新,你并不需要通过和数据库的数据必须比较来了发现客户端删除了哪些数据。当操作observable数组的时候,不使用self.tasks.remove(task)来直接删除数据,而是使用self.tasks.destroy(task)。destroy方法并不真正删除数据,而是在数据中增加_destroy属性(foreach会自动根据_destroy属性而不显示被删除记录),然后提交到服务器后,服务器端解析_destroy就能知道客户端用户请求删除哪些数据。使用destroy方法后,原来的统计数字不正确了,修改统计方法,增加&& !task._destroy判断。
<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"> <textarea name="tasks" data-bind="value: ko.toJSON(tasks)"></textarea> <input type="hidden" name="tasks" type="hidden" data-bind="value: ko.toJSON(tasks)" /> <button type="submit">Save</button> </form> <button data-bind="click: save">Save</button>
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() }); }); // Operations self.addTask = function() { self.tasks.push(new Task({ title: this.newTaskText() })); self.newTaskText(""); }; // self.removeTask = function(task) { self.tasks.remove(task) }; self.removeTask = function(task) { self.tasks.destroy(task) }; // Load initial state from server, convert it to Task instances, then populate self.tasks $.getJSON("/tasks", function(allData) { var mappedTasks = $.map(allData, function(item) { return new Task(item) }); self.tasks(mappedTasks); }); self.save = function() { $.ajax("/tasks", { data: ko.toJSON({ tasks: self.tasks }), type: "post", contentType: "application/json", success: function(result) { alert(result) } }); }; } ko.applyBindings(new TaskListViewModel());
绑定:
在MVVM解释器中,bindings绑定是把用户的视图view和viewmodel关联起来,bindings就是中间人,它执行双向更新:
- binding发现viewmodel 发生变化,然后更新相应的view的DOM
- binding捕获DOM events事件,然后更新viewmodel的属性
Knockout 有一个灵活的,综合的内置绑定集合(包含如text, click, foreach等),同时你也可以使用少量代码来完成自定义的bindings 。
要自定义binding:
1,给ko.bindingHandlers增加新的绑定属性,然后实现下面2个回调方法
2,init:在绑定刚开始的时候被调用,一般用来设置初始状态或者注册事件处理器
3,update:当关联的data发生变化的时候被调用,一般用来更新data相应的DOM
自定义fade binding例子:
ko.bindingHandlers.fadeVisible = { init: function(element, valueAccessor) { // Start visible/invisible according to initial value var shouldDisplay = valueAccessor(); $(element).toggle(shouldDisplay); }, update: function(element, valueAccessor) { // On update, fade in/out var shouldDisplay = valueAccessor(); shouldDisplay ? $(element).fadeIn() : $(element).fadeOut(); } };
<h3 data-bind="fadeVisible: pointsUsed() > pointsBudget">You've used too many points! Please remove some.</h3>
也可以集成第三方web组件,如jquery UI,参考:http://learn.knockoutjs.com/#/?tutorial=custombindings
发表评论
-
knockoutjs 变量引用方式、怪异问题排查
2012-08-24 15:01 1538问题:使用knockoutjs的过程中,有时候会发现一些奇怪的 ... -
Javascript Closures闭包、为什么要闭包(闭包作用)、变量作用域
2012-08-10 14:00 2122转自:http://www.jb51.net/article/ ... -
Javascript函数、变量的初始化顺序、Javascript上下文环境
2012-08-07 15:57 1855参考:Initialization of functions ... -
Javascript函数:函数声明、函数表达式、NFE被命名的函数表达式
2012-08-07 15:45 1184参考: functions-declaration ... -
Javascript alert object、JavaScript版本迷局
2012-07-30 15:18 24711,使用alert(object.toSource()) 注 ... -
knockoutjs -- if 绑定
2012-06-14 16:22 13031参考:http://knockoutjs.com/ ... -
jquery Fixture 插件
2012-06-07 10:16 1511jQuery.Fixture插件是一个包含在javascrip ... -
CoffeeScript
2012-04-20 15:05 1820CoffeeScript是一个被编译成javascript的小 ... -
javascriptmvc 3.2.2
2012-04-19 17:10 1362JavaScriptMVC是一个以MIT协议开源的Javasc ... -
knockoutjs -- all built-in buildings
2012-04-16 16:12 1003所有可用的binding值 文字和显示:visible, t ... -
knockoutjs -- applyBinding & Observables
2012-04-16 15:35 4496applyBindings ko.applyBindings( ... -
使用ajax和history.pushState无刷新改变页面URL onpopstate(转)
2012-04-10 13:20 11559var htmlData1 = $.ajax( ... -
knockoutjs 单页引用 客户端重定向(location.hash history.pushState)
2012-04-10 10:33 4396大部分现代的,相应的 ... -
knockoutjs foreach array绑定 表格 下拉框绑定
2012-04-09 16:04 11461动态表格使用observable arrays and the ... -
knockoutjs 静动态数据、行为绑定,计算属性及Sync同步更新 Value值更新事件控制
2012-04-09 15:24 9514data-bind="text: firstName ... -
knockoutjs -- 使用Model-View-ViewModel (MVVM) 模式简化动态Javascript UI
2012-04-09 14:35 3812Knockout 是个JavaScript library,帮 ... -
jquery-validation-1.9.0
2012-04-07 15:52 4313jQuery验证插件: 简单高 ... -
textarea文本框限制输入文本数量(Firefox,Chrome,Safari)、Javascript取得字符ASCII码值、常见字符ASCII码值
2012-04-07 10:35 2269// focus用来对应Chrome浏览器往文本框拖入值 ... -
JavaScript高级程序设计读书笔记-事件
2011-11-09 16:53 1488JavaScript和HTML之间的交互是通过用户和浏览器操作 ... -
JavaScript高级程序设计读书笔记-浏览器中的JavaScript&DOM基础
2011-11-09 14:52 944HTML中的JavaScript: <scr ...
相关推荐
KnockoutJS-i18n 当前版本:0.2 依赖:KnockoutJS KnockoutJS-i18n 是一个简单的 KnockoutJS 模块,用于在您的 KO 网站中启用多语言。 KnockoutJS-i18n 使用 observable 或计算来创建和管理您的 Web 应用程序中的...
全能 jQuery Sparkline 的 KnockoutJS 自定义绑定 依赖 没有凉亭。 项目与 Bower 重生。 扩展选项 TODO:这些可以通过将对象传递给绑定器而不是使用单独的绑定来以更友好的 KnockoutJS 代码样式处理。 时间窗口...
KnockoutJS 提供了一个强大的数据绑定系统,使得 ViewModel 中的数据变化能够自动反映到 View 上,反之亦然。这大大简化了 UI 更新的复杂性,特别是在处理大量数据和交互时。 在 "knockoutjs-jogging" 中,我们可以...
KnockOutJS示例 当用户在地图上选择标记时,用于添加,编辑和删除Google地图中的地点并显示instagram图片和yelp信息的应用程序。 来自UdacityJavaScript设计模式课程的项目 Google Map Javacript API的使用 使用...
**KnockoutJS** 是一个轻量级的MVVM(Model-View-ViewModel)JavaScript库,主要用于构建富交互性的Web应用程序。它通过数据绑定和依赖跟踪机制,使得开发者能够更轻松地管理DOM元素与JavaScript对象之间的关系。在...
在服务器端,Nhibernate负责处理数据持久化,而在客户端,KnockoutJS处理用户界面和数据的动态交互。通过JSON格式,Nhibernate可以将数据库中的数据传递给KnockoutJS,然后在前端进行展示和操作。`Knockout.Mapping`...
在 KnockoutJS 中,ViewModel 是一个 JavaScript 对象,它包含应用程序的状态和业务逻辑,同时通过数据绑定与 View 进行交互。当 ViewModel 的属性发生变化时,View 会自动更新,反之亦然。 ### 2. 数据绑定 数据...
KnockoutJS-Express-ES6 该示例演示了如何使用KnockoutJS,Express.js和ECMAScript 6以MVVM模式实现单页应用程序(SPA)。 主要特点 单页应用程序(SPA) ECMAScript 6(ES6)(带有BabelJS) 适用于MVVM的...
KOReact器一个KnockoutJS插件,可让您无缝定位视图模型中的所有更改,并能够即时定位和处理它们。 它不需要对标记或视图模型本身进行任何修改,因此非常适合测试和快速制作原型。 用法: ko.watch...
10. **自定义绑定**:如果内置的数据绑定不满足需求,可以创建自定义绑定来扩展KnockoutJS的功能,使其能与特定的DOM元素或第三方库集成。 以上只是部分关键知识点,深入学习KnockoutJS,你需要理解并实践这些概念...
在“knockoutjs-form”这个主题中,我们将深入探讨如何使用KnockoutJS来创建和管理表单,以及如何利用其特性来实现高效的数据绑定和验证。 **一、KnockoutJS基础** 1. **数据绑定**:KnockoutJS的核心特性之一就是...
KnockoutJS是一款强大的JavaScript库,专门用于实现MVVM(Model-View-ViewModel)模式,它使得数据绑定和DOM更新变得更加简单。在KnockoutJS中,组件是构建复杂用户界面的重要工具,允许我们将UI拆分为可重用的部分...
这些框架允许您将数据与 html 元素动态绑定。 用户故事 作为用户,我必须能够查看我的联系人列表,包括名字和姓氏以及电话号码。 作为用户,我必须能够添加一个包含他所有信息的新联系人。 作为用户,我必须能够...
它使用MVVM(Model-View-ViewModel)模式,帮助开发者实现数据绑定和依赖跟踪,使得视图与数据模型之间的交互变得更加简单。中文手册提供了全面的指导,使国内开发者更容易理解和应用这个库。 ### MVVM模式 MVVM是...
KnockoutJS 嵌套数据表 KnockoutJS Nested DataTable是一个 KnockoutJS 自定义组件,易于使用、自定义元素、嵌套表和可扩展。 所有默认的 dataTable 功能,如排序、分页、搜索等,也适用于该组件。 当前版本 0.1.0 ...
而KnockoutJS则是一个轻量级的JavaScript库,专门用于实现MVVM(Model-View-ViewModel)模式,它简化了DOM操作,使得前端数据绑定变得更加便捷。 在Asp.Net MVC 4中,模型(Model)负责业务逻辑和数据处理,视图...
淘汰赛-doc-ja KnockoutJS 的非官方日语文档。 添加了对 Markdown 的支持。 文章文件为 docs/articles/*.md。 PULL REQ 如果你发送它,它会被反映!格式暂时以下的风格和原家是一致的,但是如果你写的不放心,我们会...
这使您可以轻松生成一个架构,该架构可用于在服务器端验证JSON数据(使用您选择的技术),同时使客户端和服务器上的模型定义和复制自动保持自动同步。基本用法基因敲除jsonSchema创建一个ko.jsonSchema对象。 要...
它通过数据绑定和依赖跟踪机制,使得开发者能够更轻松地管理DOM(Document Object Model)与应用程序模型之间的数据同步。 ### 1. MVVM模式 MVVM模式是KnockoutJS的核心设计理念。它将用户界面分为三个部分:模型...
可以在Brackets-preference文件中分别禁用所有功能: " ericsmekens.knockoutjs.show_icon " : true ," ericsmekens.knockoutjs.code_hint " : true ," ericsmekens.knockoutjs.quick_edit " : true发行说明0.1.0 ...