knockout 多值绑定
knockout 这种东西现在已经很流行了,相信很多人对它的使用都已经很熟悉了,最近项目开发中发现knockout 绑定用的有些不怎么充分,发现整个page的code 有点累赘。
1.在绑定click 时间的时候传递 参数:
<a class="edit icon-link" id="savelink" href="javascript:void(0)" data-bind="click: $root.save.bind($data, 'SaveDetail')"><span class="l1icon-pencil"></span><span class="a-text ">Save Changes</span></a>
<a class="icon-link" href="javascript:void(0)" data-bind="click: $root.save.bind($data, 'CancelSaveDetail')"><span class="l1icon-close "></span><span class="a-text ">Cancel Changes</span></a>
这里的2个a标签都是 绑定同一个click方法(save),我们需要在调用save的时候需要区分是那个a标签所为,所以我们用参数来区分。
2.同时绑定多个属性:
<aaui-datepicker data-bind="attr:{id: 'time'+PaymentScheduleDetailId()} , event:{change: $root.timeup,keydown:$root.timedown}"></aaui-datepicker>
这里我们实际上是绑定了ID属性(id属性也含有固定部分),同时绑定了change和keydown 事件。注意一般even前面需要逗号+空格。
<td class="" data-bind="text: $root.sections['paymentSchedule'].data().CurrencySymbol() + PendingAm().toFixed(2), class:PaymentStatus()==5 && PendingAm()<=0?'del':''"></td>
这里我们同时绑定的text属性(text属性是2个属性方法拼接的结果) 和class 属性,class前面的空格是必须的哦
<td class="" data-bind=" class:PaymentStatus()==5 && AmountCollected()<=0 ?'del':'', style:{ paddingBottom: PaymentStatus() == 1 ? '50px' : '' }">
这里的class绑定的表达式是不是相比上面的要复杂了,同时这里也绑定了style 属性,注意style 属性必须是javascript能够识别的,比如这里不能是 padding-bottom而必须是 paddingBottom,我在绑定的时候写成paddingbottom一致也有结果,也纠结了几分钟。
<td class="" data-bind="text: $root.sections['paymentSchedule'].data().CurrencySymbol()+Total().toFixed(2), class:PaymentStatus()==5?'del':'', style:{ paddingBottom: PaymentStatus() == 1 ? '50px' : '' }"></td>
看这个td绑定的东西是不是比较多,不然你用knock if要写几个重复的语句。
<!-- ko if: AmountCollected() == 0 && PendingAm()==0 -->
<a href="javascript:void(0)" data-bind="click: $root.CancelDetail" class="remove l1icon-trash"></a>
<!-- /ko -->
其实knock if里面也可以写的比较复杂,很多都需要仔细测试和实践。可以参考官方说明http://knockoutjs.com/documentation/if-binding.html
http://www.cnblogs.com/TomXu/archive/2011/11/24/2256878.html
http://www.cnblogs.com/TomXu/archive/2011/11/23/2256854.html
knockout 多值绑定的更多相关文章
- Knockout: 使用CSS绑定和event的blur失去焦点事件, 给未通过校验的输入框添加红色边框突出显示.
目的:使用knockout提供的机制实现输入框失去焦点后的校验工作,并使用CSS绑定给未通过校验的输入框添加红色边框突出显示. 步骤: 先在htm中添加.error的css样式, 并在输入框中的dat ...
- WPF实现多值绑定特性以及多值转换
WPF中的实现 我们首先来看一下常规的绑定 <Window x:Class="WpfApplicationSample.MainWindow" xmlns=&qu ...
- [vue]v-bind: sytle/class-bind&属性值绑定
v-bind - style绑定 - class绑定 - 属性值绑定 <!DOCTYPE html> <html lang="en"> <head&g ...
- 总结:WPF中MultiBinding多值绑定的方法
原文:总结:WPF中MultiBinding多值绑定的方法 一.Xaml中绑定代码: <TextBlock Grid.Row="5" Grid.Column="3 ...
- WPF多值绑定及多值转换(MultiBinding和IMultiValueConverter)
WPF可以使用MultiBinding进行多值绑定,使用IMultiValueConverter进行多值转换 例: (1)转换器 public class ContentConverter : IMu ...
- WPF中DatePiker值绑定以及精简查询
WPF中DatePiker值绑定以及精简查询 1.WPF中DatePiker值绑定 Xaml中值绑定使用Text <DatePicker Text="{Binding strMinDa ...
- (七)Knockout 创建自定义绑定
创建自定义绑定 你可以创建自己的自定义绑定 – 没有必要非要使用内嵌的绑定(像click,value等).你可以你封装复杂的逻辑或行为,自定义很容易使用和重用的绑定.例如,你可以在form表单里自定义 ...
- Knockout: 实践CSS绑定和jQuery的blur失去焦点事件, 给未通过校验的输入框添加红色边框突出显示.
目的: 实践一下Knockout提供的CSS绑定功能和JQuery的blur失去焦点事件, 这次不使用Knockout的afterkeydown事件了. 步骤: 先在htm中添加.error的css样 ...
- Knockout: 实践CSS绑定和afterkeydown事件, 给未通过校验的输入框添加红色边框突出显示; 使用afterkeydown事件自动将输入转大写字母.
目的: 实践一下Knockout提供的CSS绑定功能和afterkeydown事件. 步骤: 先在htm中添加.error的css样式, 并在输入框中绑定css: { error: !firstNam ...
随机推荐
- CPU的主频
CPU的主频,即CPU内核工作的时钟频率(CPU Clock Speed).通常所说的某某CPU是多少兆赫的(MHZ),而这个多少兆赫就是“CPU的主频”.很多人认为CPU的主频就是其运行速度,其实不 ...
- oracle 编码
select * from nls_database_parameters where parameter ='NLS_CHARACTERSET'; PARAMETER VALUE --------- ...
- Spring重复扫描导致事务失败的解决方案及深入分析
问题及日志使用Spring和mybatis,然后配置事务,出现SqlSession was not registered for synchronization because synchroniza ...
- python文件相关操作
Python文件相关操作 打开文件 打开文件,采用open方法,会将文件的句柄返回,如下: f = open('test_file.txt','r',encoding='utf-8') 在上面的代码中 ...
- [JZOJ4786]小a的强迫症
[JZOJ4786]小a的强迫症 题目大意: 有\(n(n\le10^5)\)种颜色的珠子,第\(i\)种颜色有\(num[i]\)个.你要把这些珠子排成一排,使得第\(i\)种颜色的最后一个珠子一定 ...
- jQuery.fn.extend()和jQuery.extend()
jQuery.fn.extend( object ) 一个对象的内容合并到jQuery的原型,以提供新的jQuery实例方法. jQuery.fn.extend()方法继承了jQuery原型($.fn ...
- 你的java/c/c++程序崩溃了?揭秘段错误(Segmentation fault)(3)
前言 接上两篇: 你的C/C++程序为什么无法运行?揭秘Segmentation fault (1) 你的C/C++程序为什么无法运行?揭秘Segmentation fault (2) 写到这里,越跟 ...
- CentOS 7搭建KVM在线管理面板WebVirtMgr
系统版本:CentOS 7.4 WebVirtMgr版本:master分支的20180720版本,下载链接(链接:https://pan.baidu.com/s/1kl060hPHDGbwJUR_iM ...
- Windows 7重启后USB 3.0无法使用的问题解决
1.首先对主板USB3.0驱动程序进行重新安装 2.如果驱动程序重装后还是无法解决无法使用USB3.0设备的话,在win7桌面上找到“计算机”图标并鼠标右键,选择“管理”选项,找到设备管理器,然后找到 ...
- java execute、executeQuery和executeUpdate之间的区别
在用纯JSP做一个页面报警功能的时候习惯性的用executeQuery来执行SQL语句,结果执行update时就遇到问题,语句能执行,但返回结果出现问题,另外还忽略了executeUpdate的返回值 ...