zoukankan      html  css  js  c++  java
  • Konckout第二个实例:数组数据类型双向绑定 -- 下拉select

    自定义js做法:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title></title>
            <style>
                #content1{padding: 20px;}
            </style>
        </head>
        <body>
            <div id="content1">
                <select id="userNameList">
                </select>
                <b id="selectValue"></b>
            </div>
            
            <script type="text/javascript" src="js/jquery.js"></script>
            <script type="text/javascript" src="js/knockout30.js"></script>
            <script>
                function RenderSelectOptions(datas,selectNode){
                    var optionString = "";
                    for(var i in datas){
                        optionString += "<option value="+datas[i]+">"+datas[i]+"</option>";
                    }
                    selectNode.html(optionString);
                }
                $(function(){
                    var userName = ['党---','兴---','明---'];
                    var userNameList = $('#userNameList');
                    
                    RenderSelectOptions(userName,userNameList);
                    
                    $('#userNameList').change(function(){
                        var selectValue = $('#selectValue');
                        selectValue.html(userNameList.val());
                    });
                });
            </script>
        </body>
    </html>

    knockout方法

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title></title>
            <style>
                #content1{padding: 20px;}
            </style>
        </head>
        <body>
            <div id="content1">
                <select id="userNameList" data-bind="options:userNames,selectedOptions:selectedUserName">
                </select>
                <b id="selectValue" data-bind="html:selectedUserName"></b>
            </div>
            
            <script src="js/jquery.js"></script>
            <script src="js/knockout30.js"></script>
            <script>
                $(function(){
                    var ViewModel = function(){
                        var self = this;
                        self.userNames = ko.observable(['aaa','bbb','ccc']);
                        self.selectedUserName = ko.observable("");
                    }
                    var currentViewModel = new ViewModel();
                    ko.applyBindings(currentViewModel);
                });
            </script>
        </body>
    </html>

     但:这样option上value和显示的文本都是数组里的值,当需要两个不一样时,该肿么办呢:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title></title>
            <style>
                #content1{padding: 20px;}
            </style>
        </head>
        <body>
            <div id="content1">
                <select id="userNameList" data-bind="options:userNames,optionsText:'Key',optionsValue:'Value',selectedOptions:selectedUserName">
                </select>
                <b id="selectValue" data-bind="html:selectedUserName"></b>
            </div>
            
            <script src="js/jquery.js"></script>
            <script src="js/knockout30.js"></script>
            <script>
                $(function(){
                    var ViewModel = function(){
                        var self = this;
                        //self.userNames = ko.observable(['aaa','bbb','ccc']);
                        self.userNames = ko.observable([{Key:'tom',Value:'1'},{Key:'jerry',Value:'2'},{Key:'dang',Value:'3'}]);
                        self.selectedUserName = ko.observable();
                    }
                    var currentViewModel = new ViewModel();
                    ko.applyBindings(currentViewModel);
                });
            </script>
        </body>
    </html>
  • 相关阅读:
    组合和封装
    面向对象之继承与派生
    实例化产生对象和绑定关系
    面向对象程序设计和类
    常用模块(hashlib、suprocess、configparser)
    常用模块re模块(正则表达式)
    包及常用模块(time、datetime、random、sys)
    python内置函数大全
    软件开发规范及常用模块
    [NOI Online 提高组]序列 (并查集+二分图判定)
  • 原文地址:https://www.cnblogs.com/by-dxm/p/6738798.html
Copyright © 2011-2022 走看看