Пользовательский интерфейс кендо: могу ли я использовать условия в связанном шаблоне?

У меня есть этот шаблон:

<script id="tmpl_bound_menuitem" type="text/x-kendo-template">
    <li data-bind="attr: { class: style }">
        <a data-bind="attr: { href: href }, text: name"></a>
    </li>
</script>

Представление использует это для создания пунктов меню из модели меню:

<ul class="dropdown-menu" data-bind="source: menu_test" data-template="tmpl_bound_menuitem"></ul>

Это прекрасно работает. Но если я установлю эти данные:

menuModel.set("menu_test", [
    { name: "MenuItem1", href:"#/route1" },
    { name: "",         style: "divider" }
]);

Результат имеет неопределенные значения, как и ожидалось:

<ul class="dropdown-menu" data-bind="source: menu_test" data-template="tmpl_bound_menuitem">
    <li class="undefined" data-bind="attr: { class: style }">
        <a data-bind="attr: { href: href }, text: name" href="#/route1">MenuItem1</a>
    </li>
    <li class="divider" data-bind="attr: { class: style }">
        <a data-bind="attr: { href: href }, text: name" href="undefined"></a>
    </li>
</ul>

Теперь вопрос: можно ли заставить этот шаблон работать для разных типов пунктов меню?

Что-то вроде кода javascript в «обычных» шаблонах:

# if(href) { #<a data-bind="attr: { href: href }, text: name"></a># } #

Но здесь это не работает, потому что href не определен.


person Txema    schedule 14.05.2014    source источник


Ответы (1)


Да, вы можете использовать условия.

Если вы пишете if (href)..., вам нужно определить href, иначе JavaScript не найдет его. Итак, вместо этого вы должны написать:

# if(data.href) { #<a data-bind="attr: { href: href }, text: name"></a># } #

Где data — это переменная, которую автоматически генерирует KendoUI, содержащая вашу объектную модель.

Пользовательский интерфейс Kendo позволяет использовать ярлык href, потому что в коде JavaScript у них есть что-то вроде:

with (data) {
   // Code for expanding your template
   ...
}

Но для этого требуется наличие href, иначе расширение шаблона не сможет определить, является ли href глобальной переменной или членом данных.

person OnaBai    schedule 15.05.2014