Требуется замена шаблона для источника Ajax DataTables во внешнем файле JavaScript - PullRequest
0 голосов
/ 04 октября 2011

У меня следующий вызов jQuery, который правильно создает и загружает DataTable на мою страницу.Однако это работает только тогда, когда этот скрипт является частью файла HTML, поскольку мой URL-адрес sAjaxSource составлен с использованием значения замены шаблона: $ {company.name}.

Когда я перемещаю этот код в отдельный файл .jsфайл все еще выполняется, и создает DataTable.Однако, поскольку подстановка шаблона никогда не выполняется в файле include .js, sAjaxSource не задан, и таблица не загружается должным образом.

Как правильно обрабатывать это?Нужно ли включать хотя бы эту функцию javascript в сам файл HTML?

function() {
    $('#fund-contacts-table').dataTable( {bFilter: false,
                      bInfo: false,
                      bJQueryUI: true,
                      bPaginate: false,
                      bStateSave: false,
                      bSort: false,
                      bAutoWidth: false,
                      aoColumns: [ {"sTitle" : "Date", "sWidth" : "20%"}, {"sTitle" : "Our Team", "sWidth" : "20%"}, {"sTitle" : "Client Team", "sWidth" : "20%"}, {"sTitle" : "Note", "sWidth" : "40%"} ], 
                      sAjaxSource: "/contact/${company.name}/"} );
});

Ответы [ 2 ]

0 голосов
/ 05 октября 2011

Мой лучший ответ на данный момент (но я оставлю вопрос открытым, чтобы посмотреть, сможет ли кто-нибудь действительно решить его):

Вместо включения файла моего скрипта с использованием <script src=. . . /> в мой HTMLвключив его следующим образом:

<script>
<%include file="../js/fund_page.js" />
</script>

, где %include - это директива Mako, которая читает указанный файл, выполняет обработку шаблона и включает его в файл HTML.Похоже, что он предназначен для фрагментов HTML, но работает и здесь.

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

0 голосов
/ 04 октября 2011

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

Перед загрузкой вашего внешнего .js,

<script>
var contactSource = "/contact/${company.name}/";
</script>

А потом в вашей инициализации во внешнем js:

sAjaxSource: contactSource;
...