1. 程式人生 > >Knockout學習(2)之observableArray,監控陣列,展示下拉框

Knockout學習(2)之observableArray,監控陣列,展示下拉框

ko對於陣列下拉框,監控跟蹤屬性值關鍵字為:observableArray,繫結值關鍵字為:options

例子如下:

@{
    ViewBag.Title = "Index2";
}


<h2>Index2</h2>
<head>
    <script src="~/Scripts/jquery-1.10.2.min.js"></script>
    <script src="~/Scripts/KnockOut.js"></script>
    <script>
        $(function () {
            var ViewMode =function () {
                this.UserNames = ko.observableArray(["張三", "李四", "王五"]);
            };
            ko.applyBindings(ViewMode);
        });
    </script>
</head>
<body>
 <select data-bind="options:UserNames>
 </select>
</body>

這樣,就綁定了一個下拉框,效果如下:


我們通常還需要獲取下拉框的值,也可以用到ko

ko對於下拉框選中值:監控跟蹤屬性值關鍵字為:observable,繫結值關鍵字為:selectedOptions

只需這樣:

@{
    ViewBag.Title = "Index2";
}


<h2>Index2</h2>
<head>
    <script src="~/Scripts/jquery-1.10.2.min.js"></script>
    <script src="~/Scripts/KnockOut.js"></script>
    <script>
        $(function () {
            var ViewMode =function () {
                this.UserNames = ko.observableArray(["張三", "李四", "王五"]);
                this.UserName = ko.observable();
            };
            ko.applyBindings(ViewMode);
        });
    </script>
</head>
<body>
 <select data-bind="options:UserNames,selectedOptions:UserName">
 </select>
  <br />
   當前選擇的值為: <span data-bind="html:UserName"></span>
</body>

效果如下:


---------------------------------------------------------------------------------------------------------------------------------

有時,我們下拉框展示的值與實際獲取到的值一般不一致,ko也有Text與Value兩個屬性,所以上面的程式碼可以這樣改:

@{
    ViewBag.Title = "Index2";
}


<h2>Index2</h2>
<head>
    <script src="~/Scripts/jquery-1.10.2.min.js"></script>
    <script src="~/Scripts/KnockOut.js"></script>
    <script>
        $(function () {
            var ViewMode = function () {
                //this.UserNames = ko.observableArray([ "張三", "李四", "王五"]);
                this.UserNames = ko.observableArray([{ Text: "張三", Value: "1" }, { Text: "李四", Value: 2 }, { Text: "王五", Value: 3 }]);
                this.UserName = ko.observable();
            };
            ko.applyBindings(ViewMode);
        });
    </script>
</head>
<body>
 @*<select data-bind="options:UserNames,selectedOptions:UserName"></select>*@
    <select data-bind="options:UserNames,optionsText:'Text',optionsValue:'Value',selectedOptions:UserName"></select>
  <br />
   當前選擇的值為: <span data-bind="html:UserName"></span>
</body>

前端介面展示如下: