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. 在Windows7 下调试CodeSmith 注意事项

    编写CodeSmith模板和编写程序一样,也需要进行调试,CodeSmith支持使用CLR’s Just-in-Time debugger调试模板. 要调试模板,首先要在CodeTemplate声明中 ...

  2. 【转】Python中的赋值、浅拷贝、深拷贝介绍

    这篇文章主要介绍了Python中的赋值.浅拷贝.深拷贝介绍,Python中也分为简单赋值.浅拷贝.深拷贝这几种"拷贝"方式,需要的朋友可以参考下   和很多语言一样,Python中 ...

  3. 「2014-4-13」Think twice before starting the adventure

    杂文一篇. 1. 取名字真心是一件特别困难的事情.这位独立开发者花了将近两天的时间,给他的私人项目取了个名字:这篇博客<为何我不鸟你的开源项目>里显然还忽视了一个原因,就是名字取得太烂以至 ...

  4. Apache连接PHP后无法启动问题解决思路

    问题:apache之前正常,连接配置完PHP后无法启动,用apache Test Configration测试后报错形式为: Cannot load D:/php/php5apache2_2.dll ...

  5. 归并排序-java

    排序-归并排序 基本思想:是指将两个或两个以上的有序表合并成一个新的有序表. 具体步骤: (1首先将整个表看成是n个有序子表,每个子表的长度为1. (2)然后两两归并,得到n/2个长度为2的有序子表. ...

  6. VC CComboBox用法总结

    VC每日一练,虽然简单,不动手试一下不能真正记住. 大气象 CComboBox *comboBox=(CComboBox*)GetDlgItem(IDC_COMBO1); comboBox->I ...

  7. 打包java项目为可执行程序(exe)

    一直都是编写了java程序后在控制台 javac --> java 命令运行,或者在eclipse中运行,今天突然想怎么可以写好了一个项目随处可以运行呢? 于是网上搜了步骤,跟着一步一步实现了, ...

  8. Linux命令行小插曲

    当命令行出错活出现<时,可使用 ctrl+c强制退出

  9. IOS 获取当前对象所在的VC

    id next = [self nextResponder] ; while (next != nil) { next = [next nextResponder]; if ([next isKind ...

  10. Ubuntu 初始化Root账户密码

    昨晚新装的Ubuntu12(电脑太烂了),每次都记不住初始化root密码的命令,既然决定开始写自己的园子了,那就在自己的园子里面记一下,方便自己稳固之心 好了,不废话了了 draenei@ubuntu ...