1. 程式人生 > >Kendo MVVM 數據綁定(十) Source

Kendo MVVM 數據綁定(十) Source

多個 分享圖片 temp 指定 htm 發生 當前 通過 圖片

Kendo MVVM 數據綁定(十) Source

Source 綁定可以把 ViewModel 的值和由 Kendo 模板定義的目標元素綁定,如果 ViewModel 的值發生變化,被綁定的目標元素也隨之發生變化。模板由屬性 data-template 指定,它的值為某個 script 定義的模板的 id. 如果沒有指明模板,則根據元素的標記使用缺省的模版。

Source 綁定到數組

當 ViewModel 的值 為一數組時,那麽通過 Source 綁定到模板時,會把數組中每個元素逐個應用到模板,最後的輸出為應用這些模板的結果的綜合。 添加刪除數組中的內容,顯示的內容也隨之變化。

註:綁定到 ViewModel 數組時,Source 指明的為單個跟元素名稱,例如:

<ul data-template="ul-template" data-bind="source: products">
</ul>
<script id="ul-template" type="text/x-kendo-template">
    <li>
        id: <span data-bind="text: id"></span>
        name: <span data-bind="text: name"></span>
    </li>
</script
> <script> var viewModel = kendo.observable({ products: [ { id: 1, name: "Coffee" }, { id: 2, name: "Tea" }, { id: 3, name: "Juice" } ] }); kendo.bind($("ul"), viewModel); </script>

這個例子會輸出三個 li 元素–每個對應到 products 數組中一個元素,下面為輸出的 HTML 內容:

<ul>
    <
li> id: <span>1</span> name: <span>Coffee</span> </li> <li> id: <span>2</span> name: <span>Tea</span> </li> <li> id: <span>3</span> name: <span>Juice</span> </li> </ul>

技術分享圖片

如果 ViewModel 綁定的數組的內容為簡單類型(如數字,字符串,日期),這時在模板中需要使用 ”this” 關鍵字來引用當前數組項:

<ul data-template="ul-template" data-bind="source: products">
</ul>
<script id="ul-template" type="text/x-kendo-template">
    <li data-bind="text: this"></li>
</script>
<script>
var viewModel = kendo.observable({
    products: [ "Coffee", "Tea", "Juice" ]
});

kendo.bind($("ul"), viewModel);
</script>

輸出內容如下:

<ul>
<li>Coffee</li>
<li>Tea</li>
<li>Juice</li>
</ul>

Source綁定到非數組

source 綁定也支持綁定到非數組值,此時在模板中引用到 ViewModel 的某個屬性,最終的結果為模板使用 ViewModel 後的結果。

<div data-template="div-template" data-bind="source: person">
    <script id="div-template" type="text/x-kendo-template">
    Name: <span data-bind="text: name"></span>
    </script>
</div>
<script>
var viewModel = kendo.observable({
    person: {
        name: "John Doe"
    }
});

kendo.bind($("div"), viewModel);
</script>

輸出:

<div>
    Name: <span>John Doe</span>
</div>

你也可以直接綁定到 ViewModel 對象本身,此時可以使用把 source 的值設置為 “this” ,例如:

<div data-template="div-template" data-bind="source: this">
    <script id="div-template" type="text/x-kendo-template">
    Name: <span data-bind="text: name"></span>
    </script>
</div>
<script>
var viewModel = kendo.observable({
    name: "John Doe"
});

kendo.bind($("div"), viewModel);
</script>

結果如下:

<div>
Name: <span>John Doe</span>
</div>

Source 綁定 Select 元素

當數組綁定到 select 元素時,就創建多個 option 元素。

<select data-bind="source: colors"></select>
<script>
var viewModel = kendo.observable({
    colors: [ "Red", "Green", "Blue" ]
});

kendo.bind($("select"), viewModel);
</script>

輸出的 HTML 元素如下:

<select>
    <option>Red</option>
    <option>Green</option>
    <option>Blue</option>
</select>

select 元素也可以綁定到 JavaScript 對象數組(非簡單類型),此時可以同時指定 data-text-field,data-value-field 用來指定 option 元素的 value 和 text 屬性,例如:

<select data-text-field="name" data-value-field="id"
       data-bind="source: products"></select>
<script>
var viewModel = kendo.observable({
    products: [
        { id: 1, name: "Coffee" },
        { id: 2, name: "Tea" },
        { id: 3, name: "Juice" }
    ]
});

kendo.bind($("select"), viewModel);
</script>

輸出如下:

<select>
    <option value="1">Coffee</option>
    <option value="2">Tea</option>
    <option value="3">Juice</option>
</select>

Kendo MVVM 數據綁定(十) Source