$. template возвращает объект вместо функции

#javascript #jquery-plugins #anonymous-function #jquery-templates

#javascript #jquery-плагины #анонимная функция #jquery-шаблоны

Вопрос:

Я использую плагин jQuery, который называется JsRender от BorisMoore.

На главной странице все работает отлично, но когда я просматриваю страницу контактов, плагин не работает:

Сообщение об ошибке в консоли chrome

 Uncaught TypeError: object is not a function
jquery.tmpl.js:329

Uncaught Template command not found: getDay 
js:2000
  

Я зарегистрировал свои теги следующим образом:

 var blogMarckuptmpl = '<li>'   '<div class="blog-date">'   '<img src="@Url.Content("~/Images/calendar.png")" alt="Calendário" />'   '<span class="blog-dateDay">{{getDay publishedDate}}</span>'   '<span class="blog-dateMonth">{{getMonthName publishedDate}}</span> '   '</div> '   '<div class="blog-text">'   '<a href="{{=link}}" target="_blank" title="{{=title}}">'   '<h4>{{=title}}</h4>'   '</a>'   '<p>{{=contentSnippet}}</p>'   '</div>'   '</li>';
$.template("blogTmpl", blogMarckuptmpl);
$.views.registerTags({
  getDay: function(val) {
    return new Date(val).getDate();
  },
  getMonthName: function(val) {
    return new Date(val).toString("MMM").toLowerCase();
  }
});
var feedBlog = new google.feeds.Feed("http://blog.bindsolution.com/rss");
feedBlog.setNumEntries(4);
return feedBlog.load(function(blogFeedResult) {
  if (!blogFeedResult.error) {
    $("#blog-feed").html($.render(blogFeedResult.feed.entries, "blogTmpl"));
  }
}
  

Просматривая исходный код, JsRender обнаружил, что на странице контактов в $.template(tmpl) функция возвращает объект вместо анонимной функции (как на главной странице).

Дополнительная информация

Для облегчения понимания, захваченные изображения отладочного chrome:

Два изображения для каждой страницы (страница контактов и домашняя страница) Первое изображение (с окончанием 1) является отладкой перед $.template(tmpl) , второе (заканчивающееся 2) с отладкой после $.template(tmpl) .

Обратите внимание на tmpl объект в переменной области видимости (справа)

Домашняя страница (ранее) : tmpl строковый тип

Домашняя страница (после) : Обратите внимание на tmpl объект в переменной области видимости (справа), он является анонимной функцией! (Правильно!)

Страница контакта (ранее) : tmpl строковый тип

Страница контакта (после) : Обратите внимание, что tmpl объект в переменной области видимости (справа) tmpl является типом объекта !!??

** Отладочные изображения **

Также доступно по адресу:http://imgur.com/a/LwXDn

Домашняя страница (ранее)

Домашняя страница (ранее)

tmpl строковый тип


Домашняя страница (после)

Домашняя страница (после)

Обратите внимание на tmpl объект в переменной области видимости (справа), он является анонимной функцией! (Правильно!)


Страница контактов (начало)

Страница содержимого (предыдущая)

tmpl строковый тип


Страница контактов (после)

Страница контактов (после)

Обратите внимание на tmpl объект в переменной области видимости (справа)

tmpl это тип объекта !!??

Комментарии:

1. Что вызывает эту функцию «рендеринга»?.

2. Кроме того, что находится в этом объекте, который возвращается?

3. JsRende верит. Но мне удалось решить проблему. Я опубликую разрешение.

Ответ №1:

Разговаривая с создателем плагина, я обнаружил, что он не работает параллельно с шаблонами jQuery.

Следите за разговором:https://github.com/BorisMoore/jsrender/issues/19