1

私は kendo-mobile のデモをいじっていましたが、例の 1 つに少し困惑しています。この特定の例では、javascript の一部があります。

 <script id="hierarchicalMobileListViewTemplate" type="text/x-kendo-template">
    # if (data.HasEmployees) { #
            <h2> #: FullName # </h2>
        </a>
    # } else { #
        <h2> #: FullName # </h2>
    # } #
</script>

これにはdata.HasEmployeesがあり、コードのどこにも変数ではないため、「データ」部分がどこから来たのかわかりません。

http://trykendoui.telerik.com/ufupの例を次に示し ます。どんな助けでも大歓迎です。

ありがとう

マイケル

ps コード全体をコピー

<!DOCTYPE html>
<html>
<head>
    <base href="http://demos.telerik.com/kendo-ui/mobile/listview/hierarchical-databinding.html">
    <style>html { font-size: 12px; font-family: Arial, Helvetica, sans-serif; }</style>
    <title></title>
    <link href="http://cdn.kendostatic.com/2014.1.416/styles/kendo.common.min.css" rel="stylesheet" />
    <link href="http://cdn.kendostatic.com/2014.1.416/styles/kendo.default.min.css" rel="stylesheet" />
    <link href="http://cdn.kendostatic.com/2014.1.416/styles/kendo.mobile.all.min.css" rel="stylesheet" />
    <script src="http://cdn.kendostatic.com/2014.1.416/js/jquery.min.js"></script>
    <script src="http://cdn.kendostatic.com/2014.1.416/js/kendo.all.min.js"></script>
</head>
<body>
    <div data-role="view" data-show="rebindListView" id="hierarchical-view" data-transition="slide">
    <header data-role="header">
        <div data-role="navbar" id="employee-navbar">
            <a data-role="backbutton" id="employee-back" data-align="left">Back</a>
            <span data-role="view-title"></span>
            <a data-align="right" data-role="button" class="nav-button" href="#/">Index</a>
        </div>
    </header>
    <ul id="hierarchical-listview" data-role="listview" data-template="hierarchicalMobileListViewTemplate"></ul>
</div>


 <script id="hierarchicalMobileListViewTemplate" type="text/x-kendo-template">
    # if (data.HasEmployees) { #
            <h2> #: FullName # </h2>
        </a>
    # } else { #
        <h2> #: FullName # </h2>
    # } #
</script>

<script>


    var serviceRoot = "http://demos.telerik.com/kendo-ui/service";

    var employees = new kendo.data.HierarchicalDataSource({
        transport: {
            read: {
                url: serviceRoot + "/Employees",
                dataType: "jsonp"
            }
        },

        schema: {
            model: {
                id: "EmployeeId",
                hasChildren: "HasEmployees"
            }
        }
    });

    function rebindListView(e) {
        var parentID = e.view.params.parent,
            element = e.view.element,
            backButton = element.find('#employee-back'),
            listView = element.find("#hierarchical-listview").data('kendoMobileListView'),
            navBar = element.find('#employee-navbar').data('kendoMobileNavBar');

        if (parentID) {
            employees.fetch(function() {
                var item = employees.get(parentID);
                if (item) {
                    backButton.show();
                    navBar.title(item.FullName);
                    listView.setDataSource(item.children);
                } else {
                    // redirect to root
                    setTimeout(function() {
                        kendo.mobile.application.navigate('#hierarchical-view');
                    }, 0);
                }
            });
        } else {
            backButton.hide();
            navBar.title('Employees');
            listView.setDataSource(employees);
        }

        e.view.scroller.scrollTo(0, 0);
    }
</script>


<script>
    var app = new kendo.mobile.Application(document.body);
</script>
</body>
</html>
4

1 に答える 1

1

変数は、テンプレートに渡されるオブザーバブルを参照します (このdata例では、データ ソース内のデータ項目)。Kendo UI はテンプレートにwith ブロックを使用します。これは、オブザーバブルが、テンプレート変数が評価されるスコープ チェーンに追加されることを意味します。代わりにこれを使用することもできます:

 <script id="hierarchicalMobileListViewTemplate" type="text/x-kendo-template">
    # if (HasEmployees) { #
        <h1> #: FullName # </h1>
    # } else { #
        <h2> #: data.FullName # </h2>
    # } #
</script>

この回答もお読みください。

于 2014-05-15T21:43:25.327 に答える