новичка к кендоКендо UI MVVM Datasource привязки к HTML-элемент ввода
Кендо источник данных возвращает только массивы и мой RESTful API возвращает клиенту как массив из одного элемента.
Однако я не могу привязать поле «Имя» клиента к окну ввода html.
Я могу, однако, использовать данные, если поместил их в «ul», как показано в приведенном ниже коде. Я знаю, что ответ json хорошо сформирован, потому что я могу console.log (obj [0] .Name);
Я попытался вернуть obj [0] в данные: источника данных, но это просто сломало все. (нет сообщения об ошибке среза, поскольку он пытается срезать массив).
Я уверен, что это легко, но я должен быть просто думать об этом все неправильно ...
Html и JS ниже:
<div data-role="view" data-title="Client Detail" data-model="app.clientView">
<!-- this does not work -->
<input data-bind="value: app.clientView.data"/>
<input data-bind="value: app.clientView.data[0].Name"/>
<input data-bind="value: app.clientView.data.Name"/>
<!-- this works -->
<ul data-role="listview" data-source="app.clientView.data" data-template="client-template"></ul>
<script type="text/x-kendo-template" id="client-template">
<a href="components/clientView/view.html?id=#: ID #">
<div>#: Name #</div>
<div>#: LastActivityOn #</div>
</a>
</script>
app.clientView = kendo.observable({
data: new kendo.data.DataSource({
transport: {
read: {
url: app.uri + "clients/69", //+ id,
type: "get",
dataType: "json",
beforeSend: function (req) {
req.setRequestHeader('X-authKey', app.key);
}
}
\t \t },
schema: {
\t data: function (response) {
\t console.log(response);
\t var obj = $.parseJSON(response);
console.log(obj[0].Name);
\t return obj;
\t }
}
})
});
Очень полезно, но я не могу заставить его работать. Если я удалю свой список в приведенном выше примере, то, похоже, данные модели представления: и schema: data; никогда не запускаются. Я добавил поле Name: и установил его в схеме: данные с представленным списком присутствуют, и он работает, без списка нет. Я добавил изменение: чтобы получить успех вызова restfull, но он никогда не срабатывает. Вручную вызывает clientView.data.read(); блокирует эмулятор. Несмотря на все это, я чувствую, что приближаюсь. : P Я тщательно обдумываю ваш ответ, теряя там хорошие вещи. – kpg
Источник данных Kendo UI DataSource не обрабатывает запросы, если это не сказано об этом виджету привязки данных или разработчику. Заблокирование, о котором вы говорите, вероятно, является отдельной проблемой - проверьте ошибки JavaScript. – dimodi
Мне пришлось сделать обходной путь, потому что мой URL-адрес отдыха в форме .../clients/{id}, где {id} зависит от предыдущего представления. Лучше всего я мог бы вычислить url в url: часть транспорта разрешена при загрузке скрипта, задолго до того, как я установил идентификатор глобальной переменной. Обходной путь состоял в том, чтобы вызвать функцию loadClient в представлении onShow-обработчика, а затем выполнить типичный вызов ajax, а затем с jQuery я установил свои элементы html - решение моих проблем простым и знакомым способом. Я отметил это как ответ, потому что это ответ на вопрос, который я задал. – kpg