#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