selectedOptions绑定目的

selectedOptions绑定控制当前选择多选列表中的哪些元素。 这旨在与<select>元素和选项绑定结合使用。

当用户选择或取消选择多选列表中的项目时,这会在视图模型上的数组中添加或删除相应的值。 同样,假设它是您的视图模型上的一个observable数组,那么每当您添加或删除(例如,通过push或splice)项到此数组时,UI中的相应项目将被选中或取消选择。 这是一个双向绑定。

注意:要控制选择单选择下拉列表中的哪个元素,可以改用value绑定。

示例

Choose some countries you'd like to visit:

源码:

<p>
Choose some countries you'd like to visit:
<select data-bind="options: availableCountries, selectedOptions: chosenCountries" size="5" multiple="true"></select>
</p> <script type="text/javascript">
var viewModel = {
availableCountries : ko.observableArray(['France', 'Germany', 'Spain']),
chosenCountries : ko.observableArray(['Germany']) // Initially, only Germany is selected
}; // ... then later ...
viewModel.chosenCountries.push('France'); // Now France is selected too
</script>

参数

这应该是一个数组(或一个observable数组)。 KO设置元素的选定选项以匹配数组的内容。 任何先前的选择状态将被覆盖。

如果你的参数是一个observable数组,绑定将更新元素的选择每当数组改变(例如,通过push,pop或其他observable数组方法)。 如果参数不可观察,它将只设置元素的选择状态一次,并且不会在以后再次更新。

无论参数是否是可观察的数组,KO都将检测用户何时选择或取消选择多重选择列表中的项目,并将更新该数组以匹配。 这是您如何读取选择的选项。

备注:让用户从任意JavaScript对象中进行选择

在上面的示例代码中,用户可以从字符串值数组中选择。 如果你愿意 ,你的选项数组可以包含任意的JavaScript对象。 有关如何控制任何对象在列表中的显示方式的详细信息,请参阅options绑定。

在这种情况下,可以使用selectedOptions读取和写入那些对象本身的值,而不是它们的文本表示。  您的视图模型可以想象用户从任意对象的数组中选择,而不必关心这些对象如何映射到屏幕上的。

uniqueName绑定目的

uniqueName绑定确保关联的DOM元素具有非空的名称属性。 如果DOM元素没有name属性,则此绑定将赋予它一个并将其设置为一些唯一的字符串值。

你不需要经常使用这个。 它只在少数情况下有用,例如:

  • 其他技术可能取决于某些元素具有名称的假设,即使在使用KO时名称可能不相关。 例如,jQuery Validation目前仅验证具有名称的元素。 要使用Knockout UI,有时需要应用uniqueName绑定以避免混淆jQuery验证。

  • 如果他们没有name属性,IE 6不允许检查单选按钮。 大多数时候这是不相关的,因为你的单选按钮元素将具有名称属性,将它们放入互斥组。 但是,为了防止您没有添加名称属性,KO将在这些元素内部使用uniqueName,以确保可以检查。

例如:

<input data-bind="value: someModelProperty, uniqueName: true" />

参数

传递true(或某些值为true)以启用唯一的Name绑定,如前面的示例所示。

KnockoutJS 3.X API 第四章 表单绑定(12) selectedOptions、uniqueName绑定的更多相关文章

  1. KnockoutJS 3.X API 第四章 表单绑定(11) options绑定

    目的 options绑定主要用于下拉列表中(即<select>元素)或多选列表(例如,<select size='6'>).此绑定不能与除<select>元素之外的 ...

  2. KnockoutJS 3.X API 第四章 表单绑定(9) value绑定

    目的 value绑定主要用于DOM元素给视图模型赋值用的.通常用于<input><select><textarea>等元素. value绑定与text绑定的区别在于 ...

  3. KnockoutJS 3.X API 第四章 表单绑定(10) textInput、hasFocus、checked绑定

    textInput绑定目的 textInput绑定主要用于<input>或者<textarea>元素.他提供了DOM和viewmodel的双向更新.不同于value绑定,tex ...

  4. KnockoutJS 3.X API 第四章 表单绑定(6) click绑定

    目的 click绑定主要作用是用于DOM元素被点击时调用相关JS函数.最常见用于button.input.a元素. 例如: You've clicked timesClick me var viewM ...

  5. KnockoutJS 3.X API 第四章 表单绑定(7) event绑定

    目的 event绑定即为事件绑定,即当触发相关DOM事件的时候回调函数.例如keypress,mouseover或者mouseout等 例如: Mouse over me Details var vi ...

  6. KnockoutJS 3.X API 第四章 表单绑定(8) submit、enable、disable绑定

    submit绑定目的 submit绑定即为提交绑定,通常用于form元素.这种绑定方式会打断默认的提交至服务器的操作.转而提交到你设定好的提交绑定回调函数中.如果要打破这个默认规则,只需要在回调函数中 ...

  7. KnockoutJS 3.X API 第四章(13) template绑定

    目的 template绑定(模板绑定)使用渲染模板的结果填充关联的DOM元素. 模板是一种简单方便的方式来构建复杂的UI结构 . 下面介绍两种使用模板绑定的方法: 本地模板是支持foreach,if, ...

  8. KnockoutJS 3.X API 第四章 数据绑定(5) 控制流component绑定

    本节目录: 一个例子 API 备注1:仅模板式的component 备注2:component虚拟绑定 备注3:传递标记到component绑定 内存管理 一个例子 First instance, w ...

  9. JavaScript高级程序设计学习笔记第十四章--表单

    1.在 HTML 中,表单是由<form>元素来表示的,而在 JavaScript 中,表单对应的则是 HTMLFormElement 类型. HTMLFormElement 继承了 HT ...

随机推荐

  1. 如何定制Activity的标题栏

    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.main); //自定义标题栏        mW ...

  2. STM32正交编码器驱动电机

    1.编码器原理        什么是正交?如果两个信号相位相差90度,则这两个信号称为正交.由于两个信号相差90度,因此可以根据两个信号哪个先哪个后来判断方向. 这里使用了TI12模式,例如当T1上升 ...

  3. PostgreSQL和MYsql的对比

    一.postgresql多进程,mysql多线程 二.postgresql和它配套的开源软件非常多,容易进行负载均衡 三.posgresql代码简介,mysql比较混乱 四.最重要的,postgres ...

  4. 【解题报告】BZOJ2550: [Ctsc2004]公式编辑器

    题意:给定一个可视化计算器的操作序列,包括插入数字.字母.运算符.分数.矩阵以及移动光标.矩阵插入行.插入列,输出操作序列结束后的屏显(数学输出). 解法:这题既可以用来提升OI/ACM写大代码模拟题 ...

  5. 在JAVA中把JSON数据格式化输出到控制台

    public class ForMatJSONStr { public static void main(String[] args) { String jsonStr = "{\" ...

  6. java小结

    1.UUID.randomUUID()是潜在线程安全的,SecureRandom.nextBytes()为synchronized

  7. ABP框架详解(四)Feature

    ABP框架中存在一个Feature的特性,功能和设计思路非常类似于框架中的Authorization功能,都是来控制用户是否能够继续操作某项功能,不同点在于Authorization默认是应用在IAp ...

  8. linux-13基础命令之-touch,mkdir

    1.  touch 命令 用于创建空白文件与修改文件时间,格式:touch[选项][文件]: linux 下文件时间有三种 @1.更改时间(mtime):内容修改时间: @2.更改权限(ctime): ...

  9. [WPF实用技巧]如何使WPF的TreeView节点之间有连线

    示例代码:TreeViewEx.zip 原文地址:http://www.codeproject.com/Tips/673071/WPF-TreeView-with-WinForms-Style-Fom ...

  10. 基础调试命令 - wt (watch and trace)

    本文介绍windbg动态调试过程中一个非常有用的命令,wt的用法. wt命令 wt命令之所以称为wt是因为它是watch and trace的简称,即用来观察和跟踪的命令.这个命令一般用在动态调试而不 ...