Как использовать функцию в шаблоне столбца сетки кендо с AngularJS

У меня есть столбец в сетке кендо, который я хочу выполнить определенную логику при рендеринге и использую Angular. У меня есть столбцы сетки, настроенные с помощью директивы k-columns.

после документация, это казалось простым: я мог добавить опцию шаблона в свой столбец, определить функцию для выполнения моей логики и передать значение dataItem. То, что у меня есть, выглядит примерно так:

k-columns='[{ field: "Name", title: "Name", 
    template: function (dataItem){
        // Perform logic on value with dataItem.Name
        // Return a string
    }
}]'

однако запуск этого вызывает синтаксическая ошибка, жалующаяся на символ " { " , который формирует открытие блока в моей функции.

Я видел несколько примеров определения функции шаблона в таком формате. Есть что-то еще, что нужно сделать, чтобы это работало? Я делаю что-то неправильно? Есть ли другой способ определить шаблон как функцию и передать ему данные столбца? (Я попытался сделать функцию на моем $ scope, которая работала, за исключением того, что я не мог понять, как получить данные в функцию.)

Спасибо за помощь.

4 ответов


похоже, что определение шаблона столбца таким образом не поддерживается при использовании AngularJS и Kendo. Этот подход работает для проектов, которые не используют Angular (standard MVVM), но терпит неудачу с его включением.

обходной путь, который обнаружил мой коллега, заключается в создании шаблона с помощью ng-bind для указания функции шаблонов на $scope, все внутри диапазона:

template: "<span ng-bind=templateFunction(dataItem.Name)>#: data.Name# </span>"

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


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

в вашем случае вы назначаете строку a значению K-столбцов, и эта строка содержит слово function и твоя фигурная скобка {

вам нужно убедиться, что функция выполняется ... что-то вроде этого:--7-->

k-columns=[
    {
       field: "Name",
       title: "Name", 
       template: (function (dataItem){
        // Perform logic on value with dataItem.Name
        // Return a string
       }())
    }
];

обратите внимание на разницу:

мы создаем объект-реальный Честное слово объект, и мы используем жизнь заполнить template собственность.


возможно, это будет полезно для кого - то-этот код работает и для меня:

columns: [
                { field: "processed", title:"Processed", width: "100px",
                    template: '<input type="checkbox" ng-model="dataItem.processed" />' },

и вы получаете двухстороннюю привязку с чем-то вроде этого:

<div class="col-md-2">
            <label class="checkbox-inline">
                <input type="checkbox" ng-model="vm.selectedInvoice.processed">
                processed
            </label>
        </div>

после нескольких часов поиска. Вот вывод, который сработал: доступ к данным сетки как {{dataItem.masterNoteId}} и ваши данные $scope как просто имя свойства или функция.

пример

            template: '<a href="\#/ops/order/{{orderId}}/note/{{dataItem.masterNoteId}}"><i class="fa fa-edit"></i></a>',

Я очень надеюсь, что это сейфы кто-то жизнь:)