1

Я следующий kendo example с шаблоном пользовательского редактирования:Кендо редактировать шаблон массив

В примере есть пользовательский шаблон редактирования, так что, когда вы дважды кликните на календаре, чтобы сделать новое событие это покажет с обычаем поля.

Существует специальное поле для «Контакты», которое имеет массив в качестве источника данных.

Этот источник данных представляет собой массив, который я получаю с сервера (требуется 1-2 секунды). Тот факт, что шаблон редактирования подготовлен с помощью тегов, не позволяет просто создать в моем успешном (или выполненном) обработчике вызова ajax, который получает данные.

Единственный способ, по которому я вижу, - подготовить данные к загрузке страницы, чтобы шаблон подбирал ее.

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

Чтобы имитировать время, которое сервер берет на загрузку данных, я использую setTimeout 1 с, таким образом шаблон редактирования не подбирает данные.

Воссоздать:

  1. двойной щелчок на календарь, чтобы создать событие
  2. уведомление о том, что контактное поле пусто (так как данные не готовы на странице загрузки)

Любая помощь оценивается

ответ

0

Это не имеет никакого отношения к задержке асинхронизации. Ваш массив kontaktdata является локальным для анонимной функции, которую вы передаете в setTimeout, поэтому она просто не существует в контексте, в котором оценивается шаблон.

Ваши данные должны быть определены как в самой модели данных, так и в глобальном контекст.

Другая проблема заключается в том, что сама структура данных должна существовать - либо kendo.data.DataSource, либо массив, и вам необходимо обновить ее новыми данными, если вы хотите, чтобы существующее представление было известно об этих новых данных. Если вы просто замените его, шаблон редактирования не сможет сразу выбрать его (если вы откроете новое диалоговое окно редактирования, оно также будет работать, конечно).

Так что, если вы сделаете это, например, он будет работать:

var kontaktdata = []; 
setTimeout(function(){  
    kontaktdata.push.apply(kontaktdata, [ 
     { text: "Demo B Client", value: 1 }, 
     { text: "Martin", value: 2 }, 
     { text: "Herbert", value: 3 }]); 
}, 4000); 
+0

Благодарим Вас за решение моей проблемы! – DavidDunham