我使用的是BorisMoore的JsRender jQuery插件。
一切在主页上都可以正常运行,但是当我浏览联系人页面时,插件不起作用:
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)
函数的联系人页面上,该函数返回一个对象而不是匿名函数(如主页中所示)。更多信息
为了便于理解,捕获了调试镶边的图像:
每页两张图片(联系页面和主页)
第一个映像(带有最终1)是在
$.template(tmpl)
之前的调试,第二个映像(以2结尾)在$.template(tmpl)
之后的调试。注意作用域变量(右侧)中的
tmpl
对象主页(之前):
tmpl
字符串类型主页(之后):
注意作用域变量(右侧)中的
tmpl
对象他是一个匿名人员! (正确!)
联系页面(之前):
tmpl
字符串类型联系页面(之后):
注意作用域变量(右侧)中的
tmpl
对象tmpl
是对象类型!**调试图像**
也可以在以下地址获得:http://imgur.com/a/LwXDn
主页(之前)
tmpl
字符串类型主页(之后)
注意作用域变量(右侧)中的
tmpl
对象他是一个匿名人员! (正确!)
联系页面(贝戈尔)
tmpl
字符串类型联系页面(之后)
注意作用域变量(右侧)中的
tmpl
对象tmpl
是对象类型! 最佳答案
与插件的创建者交谈时,我发现它无法与jQuery模板并排使用。
跟随对话:
https://github.com/BorisMoore/jsrender/issues/19