2015-09-30 2 views
1

В документации KUUU UI для компонента DataSource указано, что функция data используется для получения элементов данных для источника данных.Получение исходных данных из kendo UI DataSource

Однако он также указывает, что если источник данных привязан к массиву JavaScript (через опцию data), метод data вернет элементы этого массива. Каждый элемент массива завернут в kendo.data.ObservableObject или kendo.data.Model.

Как получить исходные развернутые элементы данных (т. Е. Имеющие такую ​​же ссылку), которые были переданы в источник данных?

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

Update

Например вот простой TreeView, имеющий один узел (конечно в реалистичном сценарии дерево будет содержать много узлов). При проверке узла я хочу получить ссылку на исходный элемент данных для проверяемого узла. this.dataItem(e.node) не возвращает исходный элемент данных, так как оператор журнала выводит значение false.

<div id="treeview"></div> 
<script> 
    var mydata = [ 
    { text: "foo", checked: false} 
    ]; 
$("#treeview").kendoTreeView({ 
    checkboxes: true, 
    dataSource: mydata, 
    check: function(e) {  
    console.log(this.dataItem(e.node) == mydata[0]); //I want this to output true 
    } 
}); 
</script> 

ответ

0

Если я правильно понимаю ваш вопрос, вы можете получить к записи независимо друг от друга с помощью ссылки источника данных и с помощью функции .at(x), где x приравнивает любую запись из источника данных, который вы пытаетесь получить доступ. Итак, чтобы получить первое.

var theData = yourDataSource.at(0); 

Чтобы обновить его, вы затем использовать .set и .sync.

theData.set('userFirstName', 'Joe'); 
theData.set('userAverageTime', 10); 
yourDataSource.sync(); 

Использование .set() удобно, потому что если вы храните все ваши обновления в итерацию коллекции, то вы можете просто запустить через них.

$.each(updatedVars, function(key, element) { 
    theData.set(key, element); 
}); 
yourDataSource.sync(); 
+0

Благодарим за отзыв. К сожалению, вызов at() не возвращает исходный элемент данных, он возвращает элемент данных, завернутый в ObservableObject.I хочу, чтобы он возвращал исходный элемент данных, чтобы я мог его обновить без необходимости поиска элемента в массиве, который был передан в источник данных. Я уточнил свой вопрос, чтобы прояснить проблему. – aw1975

Смежные вопросы