$。 template返回一个对象而不是一个函数

时间:2011-11-10 17:54:16

标签: javascript jquery-plugins anonymous-function jquery-templates

我正在使用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)函数中的联系页面返回一个对象而不是匿名函数(如主页面中所示)。

更多信息

为了便于理解,调试chrome的捕获图像:

每页两张图片(联系页面和主页) 第一个图像(最终1)是$.template(tmpl)之前的调试,第二个(结束2),$.template(tmpl)之后的调试。

请注意范围变量(右侧)中的tmpl对象

主页(之前)tmpl字符串类型

主页(之后): 注意Scope Variable中的tmpl对象(右侧) 他是一个匿名函数! (修正!)

联系页面(之前)tmpl字符串类型

联系页面(之后): 注意Scope Variable中的tmpl对象(右侧) tmpl是一个对象类型!! ??

**调试图像**

另请参阅:http://imgur.com/a/LwXDn

主页(之前)

Home page (before)

tmpl字符串类型


主页(之后)

Home page (after)

注意Scope Variable中的tmpl对象(右侧) 他是一个匿名函数! (修正!)


联系页面(Begore)

Contatc page (before)

tmpl字符串类型


联系页面(之后)

Contact page (after)

请注意范围变量(右侧)中的tmpl对象

tmpl是对象类型!! ??

1 个答案:

答案 0 :(得分:2)

与插件的创建者交谈时,我发现它与jQuery模板不兼容。

按照对话: https://github.com/BorisMoore/jsrender/issues/19