Я пытаюсь отобразить сетку Kendo с угловым щелчком по кнопке. Функция GetCustomer
для ng-click
находится в пределах customerController
. Если код для отображения функции сетки init()
вызывается из основного контроллера, тогда он отображает данные, но не на нажатие кнопки.Bind Kendo grid in Angular on button ng-click
В var
в $scope
хранятся данные, но как-то сетка в разметке html не перерисовывается при вызове из обработчиков событий. Он отображается только во время первоначального запроса страницы html. Нужно ли мне собирать обещание или что-то еще?
У меня нет ошибок в консоли, но сетка не перерисовывается с данными при нажатии кнопки. Любая помощь будет оценена по достоинству.
JSFiddle ссылка.
Вы можете раскомментировать строку init()
доступной в $scope.GetCustomer
и комментарии init()
доступны в главном контроллере для имитации этого вопроса.
Мой HTML разметка
<div>
<div data-ng-controller="customerController">
<div kendo-grid="customerGrid" k-options="customerGridOptions"></div>
<button id="submitCustomer" class="btn btn-primary" type="button" data-ng-click="GetCustomer()">Get Customer</button>
</div>
и мой контроллер код
var app = angular.module("app", [
"kendo.directives"]);
app.controller("customerController", function ($scope) {
//init(); // this works
// I want the data to be bound to the grid on ng-click handler
$scope.GetCustomer = function() {
init(); // this does not work
}
function init() {
var customerData = [{
firstName: "Joe",
lastName: "Smith",
status: "Active"
}, {
firstName: "John",
lastName: "Smith",
status: "Active"
}, {
firstName: "Travis",
lastName: "Smith",
status: "Expired"
}];
$scope.customerDataSource = new kendo.data.DataSource({
data: customerData
});
console.log('binding grid');
$scope.customerGridOptions = {
dataSource: $scope.customerDataSource,
selectable: "row"
}
}
});
Awesome, это работает. Спасибо за ссылку. –
если я устанавливаю 'filterable: true' или' sortable: true' или 'pageable: true', тогда я получаю' Uncaught TypeError: Не могу прочитать свойство 'html' of null' в консоли. Любая идея, как обойти это? Я обновил скрипку и доступен здесь [Fiddle link] (http://jsfiddle.net/deni_r/a2hLao6h/7/). –
выглядит как ошибка с k-rebind; если все, что вам нужно, динамически меняет данные, вы можете изменить существующий источник данных: http://jsfiddle.net/a2hLao6h/8/ –