- 浏览: 2160506 次
- 性别:
- 来自: 合肥
文章分类
- 全部博客 (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
动态表格使用observable arrays and the foreach
ko.observableArray: 观察者模式,根据array动态更新表格
ko中的流程控制标签:foreach, if, ifnot, and with
在foreach的数据源发生变化时,ko并不会重新生成整个table, 更高效地,ko会找到viewmodel中变化的部分, 然后更新数据变化对应的最小DOM集合。
data-bind="foreach: seats":foreach表格循环
meal().price: meal属性是一个被观察对象,在尝试取得子属性之前要使用meal()函数,即注意是meal().price, 不是 meal.price
data-bind="click: addSeat, enable: seats().length < 5":表示按钮绑定到click事件addSeat,并且按钮只在表格数据小于5时可用,删错或者增加表格数据,由于ko的自动依赖追踪机制,按钮的可用状态会自动变化。
data-bind="visible: totalSurcharge() > 0":用来控制控件是否显示,对应css的display 属性
$root.前缀代表Knockout去viewmodel的顶层查询相应属性,而不是绑定表格seats数组中的实例变量SeatReservation中查询。
必须是引用方法的形式(带括号)引用observable变量,这与ko的自动依赖追踪相对象(如果是属性的话,就仅仅引用变量的值,做不到其他效果)
viewmodel(控制器)
view视图
ko.observableArray: 观察者模式,根据array动态更新表格
ko中的流程控制标签:foreach, if, ifnot, and with
在foreach的数据源发生变化时,ko并不会重新生成整个table, 更高效地,ko会找到viewmodel中变化的部分, 然后更新数据变化对应的最小DOM集合。
data-bind="foreach: seats":foreach表格循环
meal().price: meal属性是一个被观察对象,在尝试取得子属性之前要使用meal()函数,即注意是meal().price, 不是 meal.price
data-bind="click: addSeat, enable: seats().length < 5":表示按钮绑定到click事件addSeat,并且按钮只在表格数据小于5时可用,删错或者增加表格数据,由于ko的自动依赖追踪机制,按钮的可用状态会自动变化。
data-bind="visible: totalSurcharge() > 0":用来控制控件是否显示,对应css的display 属性
$root.前缀代表Knockout去viewmodel的顶层查询相应属性,而不是绑定表格seats数组中的实例变量SeatReservation中查询。
必须是引用方法的形式(带括号)引用observable变量,这与ko的自动依赖追踪相对象(如果是属性的话,就仅仅引用变量的值,做不到其他效果)
// 下拉框绑定到$root.availableMeals数组,下拉框显示的文字内容由optionsText: 'mealName'决定,下拉框的值绑定到seats数组中对象SeatReservation的meal属性! <select data-bind="options: $root.availableMeals, value: meal, optionsText: 'mealName'"></select>
viewmodel(控制器)
// Class to represent a row in the seat reservations grid function SeatReservation(name, initialMeal) { var self = this; self.name = name; self.meal = ko.observable(initialMeal); self.formattedPrice = ko.computed(function() { var price = self.meal().price; return price ? "$" + price.toFixed(2) : "None"; }); } // Overall viewmodel for this screen, along with initial state function ReservationsViewModel() { var self = this; // Non-editable catalog data - would come from the server self.availableMeals = [ { mealName: "Standard (sandwich)", price: 0 }, { mealName: "Premium (lobster)", price: 34.95 }, { mealName: "Ultimate (whole zebra)", price: 290 } ]; // Editable data self.seats = ko.observableArray([ new SeatReservation("Steve", self.availableMeals[0]), new SeatReservation("Bert", self.availableMeals[0]) ]); // Operations self.addSeat = function() { self.seats.push(new SeatReservation("", self.availableMeals[0])); } self.removeSeat = function(seat) { self.seats.remove(seat) } self.totalSurcharge = ko.computed(function() { var total = 0; for (var i = 0; i < self.seats().length; i++) total += self.seats()[i].meal().price; return total; }); } ko.applyBindings(new ReservationsViewModel());
view视图
<h2>Your seat reservations</h2> <table> <thead><tr> <th>Passenger name</th><th>Meal</th><th>Surcharge</th><th></th> </tr></thead> <!-- Todo: Generate table body --> <tbody data-bind="foreach: seats"> <tr> <td><input data-bind="value: name" /></td> <td><select data-bind="options: $root.availableMeals, value: meal, optionsText: 'mealName'"></select></td> <td data-bind="text: meal().price"></td> <td data-bind="text: formattedPrice"></td> <td><a href="#" data-bind="click: $root.removeSeat">Remove</a></td> </tr> </tbody> </table> <h3 data-bind="visible: totalSurcharge() > 0"> Total surcharge: $<span data-bind="text: totalSurcharge().toFixed(2)"></span> </h3> <h2>Your seat reservations (<span data-bind="text: seats().length"></span>)</h2> <button data-bind="click: addSeat, enable: seats().length < 5">Reserve another seat</button>
发表评论
-
knockoutjs 变量引用方式、怪异问题排查
2012-08-24 15:01 1538问题:使用knockoutjs的过程中,有时候会发现一些奇怪的 ... -
Javascript Closures闭包、为什么要闭包(闭包作用)、变量作用域
2012-08-10 14:00 2123转自:http://www.jb51.net/article/ ... -
Javascript函数、变量的初始化顺序、Javascript上下文环境
2012-08-07 15:57 1856参考:Initialization of functions ... -
Javascript函数:函数声明、函数表达式、NFE被命名的函数表达式
2012-08-07 15:45 1185参考: functions-declaration ... -
Javascript alert object、JavaScript版本迷局
2012-07-30 15:18 24711,使用alert(object.toSource()) 注 ... -
knockoutjs -- if 绑定
2012-06-14 16:22 13032参考: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( ... -
knockoutjs -- load save data(与服务器进行数据交互) & binding绑定
2012-04-10 15:51 6054和服务器交互数据: Knockout 是一纯javascrip ... -
使用ajax和history.pushState无刷新改变页面URL onpopstate(转)
2012-04-10 13:20 11559var htmlData1 = $.ajax( ... -
knockoutjs 单页引用 客户端重定向(location.hash history.pushState)
2012-04-10 10:33 4397大部分现代的,相应的 ... -
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 的 foreach 绑定,首先需要通过 <script> 标签引入 KnockoutJS 的库,然后使用 ko.applyBindings 函数来将 KnockoutJS 的绑定应用于页面的特定部分。 总的来说,KnockoutJS 的 foreach 绑定...
总结来说,动态属性绑定技巧在Knockout.js中的应用,主要涉及扩展knockout的核心功能,以便根据运行时的需求动态地添加和绑定属性。这一技巧对于构建高度动态和可扩展的Web应用程序至关重要,能够帮助开发者更好地...
例如,如果你有一个包含多个项目的数组`myItems`,你可以使用`foreach`绑定将数组中的每个元素渲染为表格行(TR)。每当`myItems`数组发生改变,如添加或删除项目,KnockoutJS会自动更新表格。你不再需要手动添加或...
**KnockoutJS**,简称KO.js,是一个轻量级的JavaScript库,专注于MVVM(Model-View-ViewModel)设计模式,使得在Web开发中实现数据绑定和动态用户界面变得简单易行。它通过双向数据绑定特性,允许开发者在视图和模型...
不幸的是,在使用KnockoutJS的第一年左右,我收集了很多这样的东西,而没有维护源位置。 如果您在这里看到自己的作品,请告诉我,我会给你功劳! / src每个bindingHandler包含一个文件 / html包含示例文件,这些...
在KnockoutJS 3.X API中,foreach绑定与if绑定结合使用,可以实现更复杂的条件渲染。示例中展示了如何遍历planets数组,并针对每个planet,如果其capital属性不为null,则显示该capital的细节信息。 除了基本的if...
全能 jQuery Sparkline 的 KnockoutJS 自定义绑定 依赖 没有凉亭。 项目与 Bower 重生。 扩展选项 TODO:这些可以通过将对象传递给绑定器而不是使用单独的绑定来以更友好的 KnockoutJS 代码样式处理。 时间窗口...
KnockoutJS的核心特性就是双向数据绑定。这意味着当模型中的数据发生变化时,视图会自动更新;同样,当用户在界面上进行交互改变视图时,模型也会同步更新。这种绑定可以通过简单的语法如`data-bind`实现,例如`...
数据绑定是KnockoutJS的核心特性。它允许开发者用声明式的方式将JavaScript对象的属性与HTML元素关联起来。常见的数据绑定类型包括文本绑定、HTML绑定、事件绑定、条件绑定、循环绑定等。例如,`...
这可以通过KnockoutJS的`foreach`绑定实现: ```html <ul data-bind="foreach: { data: pages(), as: 'page' }"> <li><a href="#" data-bind="text: page, click: function() { currentPage(page); }"></a></li> ...
通过引入这些库文件,页面能够获得丰富的表格操作功能,以及KnockoutJS的数据绑定和自动更新能力。 博主还演示了如何利用knockout.mapping插件来将后端返回的JSON数据序列化并绑定到页面元素上。该插件能够将JSON...
数据绑定是KnockoutJS的主要功能,它允许开发者声明性地将UI元素与JavaScript对象的属性关联起来。KnockoutJS支持多种类型的绑定,如文本绑定、HTML绑定、事件绑定、条件绑定、循环绑定等,使得UI的更新自动化,...
而KnockoutJS则是一个轻量级的JavaScript库,专门用于实现MVVM(Model-View-ViewModel)模式,它简化了DOM操作,使得前端数据绑定变得更加便捷。 在Asp.Net MVC 4中,模型(Model)负责业务逻辑和数据处理,视图...
接下来,在具体实现中,结合KnockoutJs进行数据绑定和视图模型的定义,使用Bootstrap框架来美化界面,最终实现一个完整的单页面应用程序。开发者可以利用KnockoutJs的依赖项跟踪特性来更新DOM,并且可以使用...
KnockoutJS是一个轻量级的MVVM(Model-View-ViewModel)库,它使得数据绑定和DOM操作变得更加简单。在KnockoutJS 3.X版本中,事件绑定(event binding)是其核心功能之一,允许开发者在用户与页面交互时调用特定的...
在KnockoutJS框架中,click绑定是用来响应DOM元素点击事件的一种机制,它允许开发者在用户与界面交互时执行JavaScript函数。KnockoutJS是一个轻量级的JavaScript库,用于构建可扩展的富数据应用程序。本文将详细介绍...
textInput绑定目的 textInput绑定主要用于<input>或者<textarea>元素。他提供了DOM和viewmodel的双向更新。不同于value绑定,textinput绑定是实时更新的。 例如: 源码: <p>Login name: <input ...
接下来,我们需要在 ViewModel 中定义这些数据,并使用 KnockoutJS 的 observable 和 observableArray 来实现数据绑定。Observable 可以监听数据的变化,当数据改变时,与之绑定的视图会自动更新。 ```javascript ...
1. **数据绑定**:KnockoutJS的核心在于其强大的数据绑定功能,允许开发者将DOM元素与JavaScript对象的数据属性直接关联。源码中会展示如何使用`text`, `html`, `value`, `if`, `foreach`等不同的数据绑定指令来动态...