(三)Knockout - ViewModel 的使用2 - select应用

下拉菜单

<select>常用的data-bind参数:

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数组的元素项目,也会立刻变更对应option的selected状态。

DEMO1

使用静态数据绑定

<select data-bind ="options:selectOptions, optionsText: ‘name‘, optionsValue: ‘id‘, value:result">
</select><br/>
排行:<span data-bind ="text:result" ></span ><br/>
<input type ="button"  value ="Third"  data-bind ="click:changeToYoung"/>
var MyViewModel = function() {
    var me = this;
    me.selectOptions = [
            {name:"First",id:1},
            {name:"Second",id:2},
            {name:"Third",id:3}
    ];
    me.result = ko.observable(2); //只能检测 value
    me.changeToYoung = function(){
        me.result(3);  //ko.observable()声明的属性,使用propName("...")方式改变其值,才能通知相关UI产生联动效果
    }
}
ko.applyBindings(new MyViewModel());

解析:

- ViewModel定义了selectOptions数组(假设选项不会动态变化,故用一般数组即可,不用ko.observableArray),数组元素对象各有t、v两个属性分别当做<option>的文字跟值,而下拉菜单的选取结果要反应到result这个ko.observable()属性上

- 为了观察选取结果,再增加一个<span data-bind="text: result">即时反应result内容。

- 声明一个chageToPhone()函数,将result的值强制指定为"Third" 。

DMEO2

动态数据绑定

在<select> data-bind的options选项如果绑定到ko.observableArray(),就可以动态新增选项效果,也就是可以利用其完成常见的级联效果的。

var ViewModel = function() {
   var me = this;
   //使用observableArray进行绑定可以动态变更option选项
   me.selectOptions = ko.observableArray([
        { "text": "请选择", "value": "0" }
   ]);
   me.result = ko.observable("0");//添加result监控属性,初始绑定值为0
}
var vm = new ViewModel();
ko.applyBindings(vm);
$("#btnAddItem").click(function () {
   vm.selectOptions.push({
       "text": $("#txtOptText").val(),
       "value": $("#txtOptValue").val()
   });
});
<select style="background-color:ActiveCaption;width:100px"  data-bind="options: selectOptions, optionsText: ‘text‘, optionsValue: ‘value‘, value: result"></select>Value=<span data-bind=" text: result"></span>
<div> Text: <input id="txtOptText" value="选项1"/></div>
<div>Value: <input id="txtOptValue" value="1" /></div>
<input type="button" value="新增选项" id=‘btnAddItem‘ />
时间: 2024-10-10 17:50:34

(三)Knockout - ViewModel 的使用2 - select应用的相关文章

python IO 多路复用 select poll epoll

三个多路复用模型的概念 select select 原理 select 是通过系统调用来监视着一个由多个文件描述符(file descriptor)组成的数组,当select()返回后,数组中就绪的文件描述符会被内核修改标记位(其实就是一个整数),使得进程可以获得这些文件描述符从而进行后续的读写操作.select饰通过遍历来监视整个数组的,而且每次遍历都是线性的. select 优点 select目前几乎在所有的平台上支持,良好跨平台性. select 缺点 每次调用select,都需要把fd集

Linq学习(三)-基本查询

一.本将主要介绍内容 从linq,sql,lambda三个角度比较来学习 select.orderby.分页.group by.distinct.子查询.in的用法 1.select 查询用户和它们的自我介绍 Linq to sql from a in Blog_UserInfo select new { 真实名字=a.RealName, 自我介绍=a.Introduce } sql SELECT [t0].[RealName] AS [真实名字], [t0].[Introduce] AS [自

表单(三)联动总结

任务目的 加强对JavaScript的掌握 熟悉常用表单处理逻辑 任务描述 如示例图中所示,在页面中完成两个单选框,切换单选框的不同选项时下方显示的表单随之切换. 当选择在校生时,出现两个select下拉菜单,一个选择城市,一个选择学校,当选择非在校生时,出一个文本输入框 学校下拉菜单里的学校名单均为城市下拉菜单中所选的城市中的大学,当城市发生变化时,学校一起发生变化 城市及学校的数据随意编造即可,无需真实完整 任务注意事项 要求功能实现与任务描述中完全一致 示例图仅为参考,样式不需要完全实现一

用JQuery编写textarea,input,checkbox,select

今天学习怎样用JQuery编写一些小的代码,小小的试了一下编写一个textarea,代码如下: <!DOCTYPE HTML> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style type="text/css" media="screen"> *{ marg

【我的Oracle学习笔记(二)】----- select语句补充

一.多表查询 多表查询是指从多个有关联的表中查询数据,其语法与单表查询类似.一般来说,多表查询的表要用连接联系起来,如果没连接,则查询结果是这多个查询表的笛卡尔积(注释1). 模拟查询雇员姓名和所在部门名称: select [雇员姓名],[部门名称] from [雇员表] a,scott,[部门表] b where a.[部门编号]=b.[部门编号]; 上例中,为每一个查询表指定了别名,便于SQL语句的书写. 模拟查询在”sales“部门工作的雇员其雇员姓名 select [雇员姓名] from

浅谈网络I/O多路复用模型 select &amp; poll &amp; epoll

我们首先需要知道select,poll,epoll都是IO多路复用的机制.I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作.但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的. select的基本用法:http://blog.csdn.net/nk_test/article/details/49256129 poll的基本用法:http

Ajax与select标签的组合运用

------------------------------------------------------------------------------------------------------- 如下包含select的表单,使用Ajax提交表单数据: <form> <select name="id"> <option value="0">无</option> <option value="1

oracle sql 基础(二):select 语句

为了从数据库中查询数据,你需要用SQL语言中使用最多的SELECT语句.我们分别介绍SELECT语句的基础语法.子查询.从多表中查询数据,然后再进行实例解析. 一.SELECT语句的基础语法 SELECT语句就像叠加在数据库表上的过滤器,即选择查询用于定位数据库特定的列和行.下面是SELECT语句的基础语法.  SELECT [ALL|DISTINCT SELECT_LIST FROM {table_name|view_name} [WHERE search_condition] [GROUP

详细说说select poll epoll

(以下内容来自网络和自己的总结,再次感谢网络中的大神们提供的见解) 在探索select poll  epoll之前我们首先要知道什么叫多路复用: 下来探索一下为什么会用到多路复用: 首先我们看看一个客户端请求服务器的完整过程.首先,请求过来,要建立连接,然后再接收数据,接收数据后,再发送数据. 具体到系统底层,就是读写事件,而当读写事件没有准备好时,必然不可操作,如果不用非阻塞的方式来调用,那就得阻塞调用了,事件没有准备好,那就只能等了,等事件准备好了,你再继续吧.阻塞调用会进入内核等待,cpu