Для преимуществ других .... и благодаря OnaBai!. .. Вот решение!
У Kendo UI не хватает многих базовых функций, которые предоставляет другой UI SDK. Один из них - это «onDisplay», который даже запускается после того, как виджет будет окрашен. Это позволило бы приложению реагировать на конкретный случай, например, в шахте, где dataSource загружал узел, содержащий поле «selected = true».
Kendo TreeView реагирует, показывая узел как выбранный, но в большинстве сценариев реального мира приложение также должно реагировать. Вот почему нужно будет вызвать инициализацию виджета, чтобы проверить, выбран ли узел и соответственно ли он реагирует.
Единственный взломанный нами (OnaBai) найден, чтобы использовать событие «DataBound» как событие события «onDisplay». Приветствие заключается в том, что это событие запускается каждый раз, когда родительский узел является дочерним, который каким-то образом модифицировался. Поэтому он называется несколько раз.
Так вот код, чтобы обойти это ограничение! http://jsbin.com/ejabul/4/edit (Обратите внимание, что вы должны нажать «Запуск с JS» для имитации перезагрузки страницы)
$("#treeview").kendoTreeView({
dataSource:data,
dataTextField: "text",
select: onSelect,
dataBound: function (e) {
var uid = undefined;
var now = this.select();
if (now) {
var data = this.dataItem(now);
uid = data.uid;
if (uid && uid !== this.old_selected) {
alert("Bingo !");
}
console.log("data", data.uid);
}
this.old_selected = uid;
}
});
Разъяснение OnaBai
- Магазин в UID Уникальный идентификатор выбранного элемента , Этот идентификатор вводится пользовательским интерфейсом Kendo для большинства узлов, элементов, ... которые он создает. Первоначально я устанавливал его неопределенным (на случай, если ничего не выбрано)
- «now» содержит текущий выбранный узел (если есть).
- Если элемент выбран (теперь! == undefined), я получаю элемент данных для выбранного узла, а затем получаю UID для этого узла.
- Если есть UID и отличается от UID предыдущего выбранного узла (который я храню в поле, которое я только что расширил в tree_view, и я вызвал old_selected), тогда я предупреждаю.
- Наконец, я сохраняю UID выбранного узла в следующий раз.
В основном я пытаюсь контролировать то, что я не предупреждаю два раза подряд для одного и того же узла и для его управления. Я сохраняю UID выбранного узла с одной итерации на другую.
Не могли бы вы сделать код, показывающий его? Он использует, чтобы облегчить устранение других проблем, чем писать и, возможно, не воспроизводить проблему. – OnaBai
http://jsbin.com/abapid/2/edit – Tuthmosis
Он работает! Что не работает? Если я нажму «Таблицы и стулья», появится всплывающее окно. – OnaBai