кендо пользовательский интерфейс установить представление модели страницы данных название динамически mvvm - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь установить заголовок своего представления динамически, но пока безуспешно. Я пытаюсь что-то вроде этого:

<div data-role="view"
 id="mt-details-view"
 data-title="#= pageTitle #" <---- this one
 data-layout="mt-main-layout"
 data-init="X.details.onInit"
 data-before-show="X.details.beforeShow"
 data-show="X.details.onShow"
 data-model="X.details.viewModel"
 data-use-native-scrolling="true">

Я попытался использовать функцию, попытался установить переменную viewModel, попытался передать заголовок из view.params, попытался также установить заголовок для функции onShow следующим образом:

function onShow(e) {
    X.debug.dbg2(e.view.id, "onShow");
    viewModel.setViewParams(e.view.params);
    e.view.title = e.view.params.pageTitle;
    e.view.options.title = e.view.params.pageTitle;
    fetchSomeDetails();
}

ничего не работает.

Просветите меня, пожалуйста!

1 Ответ

0 голосов
/ 04 мая 2018

Вот один из подходов, который вы можете попробовать. После объявления вашей модели представления, свяжите функцию с методом set. Здесь проверьте, является ли заданное поле свойством заголовка страницы в модели представления. Если это так, найдите элемент dom, содержащий текст заголовка, и установите для его html значение 'set':

X.details.viewModel.bind("set", function(e) {
    if (e.field == "pageTitle") {
        $("#mt-details-view [data-role='view-title']").html(e.value);
  }
})

Всякий раз, когда это свойство изменяется в модели представления, теперь вы увидите, как оно отражается на странице. Однако все еще существует проблема установки значения в пользовательском интерфейсе изначально. Вы можете сделать это в функции onShow, которая, конечно же, происходит после визуализации представления и создания всех элементов dom:

function onShow(e) {
    var temp = viewModel.pageTitle;
    viewModel.set("pageTitle", null);
    viewModel.set("pageTitle", temp);
}

Это заставит работать метод set на viewmodel, и пользовательский интерфейс должен обновиться.

...