Knockout.js 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

option

option绑定主要针对于< select >标签,它有以下绑定参数:

options: 指向数组或ko.observableArray(),KO会将数组元素转换为下拉选项。如果是ko.observableArray(),当动态增加或移除阵列元素时,下拉选项也会马上跟着增减。

optionsText, optionsValue: 用来产生下拉选项的数组元素可以是具有多个属性的JavaScript对象,通过optionText, optionValue设定属性名称字符串,我们可以指定用哪个属性当成 < option > 的文字内容,哪个属性当成value

value: 指向ViewModel的特定属性,属性一般以ko.observable()声明。如此当下拉菜单选取新值,所选的 < option > value值会更新到ViewModel属性上;而一旦该属性被程序修改或因使用者输入改变,下拉菜单也会自动切到新值对应的 < option > 选项上。

selectedOptions: 针对可多选(multiple)的 < select > ,selectedOptions可绑定到ko.observableArray()类型属性,该数组使会即时反应使用者所选取的项目集合;而变更该obervableArray数组的元素项目,也会立刻变更对应optionselected状态。

function MyViewModel() {
        var self = this;
        self.selectOptions = [
                {name:"老大",id:1},
                {name:"老二",id:2},
                {name:"老幺",id:3}
        ];
        self.result = ko.observable(2);//只能检测 value
}
ko.applyBindings(new MyViewModel());
<!-- 指定options来源,option text/value对应的属性名称 -->
<select data-bind ="options:selectOptions, optionsText: 'name', optionsValue: 'id', value:result"></select><br/>
排行:<span data-bind ="text:result" ></span ><br/>
将上面的代码练一练。