2014-01-17 2 views
1

Я пытался в течение длительного времени, чтобы получить эту работу ..вызова шаблон внешнего HTML для шаблона столбца кендо сетки

В основном я назначаю столбцы и шаблоны динамически кендо сетки. Каждый столбец может быть любого типа. Если тип типа «адрес», то я назначаю html-шаблон этому столбцу, чтобы разделить строку адреса и отобразить красивым способом.

Я делаю это, создавая карту возможных типов столбцов и соответствующих им шаблонов. Проблема заключается в карте адреса.

uiTemplateMap["date"] = "#= kendo.toString(kendo.parseDate(" + fieldName + "), 'MM/dd/yyyy') #"; 
uiTemplateMap["address"] = eval("kendo.template($('\\#address-template').html())"); 

'Адрес-шаблон' определяется как

<script id="address-template" type="text/x-kendo-template"> 
    # var addr = ${addresses} ; # 
    # var splitaddr = addr.split(','); # 
    # for (int i=0; i < splitaddr.length(); i++) { # 
     <i> #= splitaddr[i] # </i> 
    # } # 
</script> 

Я получаю недопустимое исключение шаблона. У меня есть два вопроса.

  1. Как я могу присвоить значение столбца переменной javascript? Назначение $ {addresses} не работает.
  2. Я не хочу жестко закодировать столбец «адреса» в шаблоне. Могу ли я передать имя столбца или значение в шаблон, например $ ('# address-template'). Html (columnName) ??

Любая помощь будет высоко ценится, благодаря

ответ

2

Вы можете получить доступ к значению столбца в data[columnName] где columnName это название поля (строка), или, так как функция шаблона использует with блок, просто в columnName, так что вы можете определить шаблон генератор вроде этого:

function createAddressTemplateFor(columnName) { 
    return "# var address = data['" + columnName + "']; #" + // or: var address = columnName; 
     "# var splitaddr = address.split(','); #" + 
     "# for (var i = 0; i < splitaddr.length; i++) { #" + 
     "<i> #= splitaddr[i] # </i><br />" + 
     "# } #"; 
} 

(demo)

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

+0

Большое спасибо за ваш ответ, работает очень хорошо. – user3207455

+0

рад, что это помогло; если это разрешило ваш вопрос, вы должны рассмотреть [принятие] (http://meta.stackexchange.com/a/5235). –

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