【问题标题】:JQuery templates are not working with arraysJQuery 模板不适用于数组
【发布时间】:2012-04-07 20:53:56
【问题描述】:

我只是在学习 Jquery 模板并逐步尝试不同的东西。现在我用单条目数据元素尝试了它,它工作正常。据我了解,如果我用数据数组替换数据,那么它将显示所有元素而不使用 {each} 标记。但在这种情况下,它只是出错了。在jQuery中。说k.nodes is undefined

这是一个小代码sn-p:

// my binding
$(document).ready(function () {
  $.tmpl("<div class = 'Test'>${Name}<div>", movies)
    .appendTo('#EmployeeContainer');
  $('#Template')
    .tmpl(movies)
    .appendTo('#EmployeeContainer');
});

// my data
var movies = [
  { Name: "The Red Violin", ReleaseYear: "1998" },
  { Name: "Eyes Wide Shut", ReleaseYear: "1999" },
  { Name: "The Inheritance", ReleaseYear: "1976" }
];

// part of my template from where Release year is coming
<script id = "Template" type ="text/templating">
  <div class = 'Test'>${ReleaseYear}<div>
</script>

【问题讨论】:

    标签: javascript jquery jquery-templates


    【解决方案1】:

    看来您可能忘记编译模板了。

    看看第一个例子at jquery.com

    具体需要调用:$.template(...);编译模板。

    您已经获得了呈现模板的$.tmpl(...); 部分。但是,您需要在渲染之前对其进行编译。

    更新:主要的错误是您缺少模板中的结束 div。你有&lt;div&gt; 而不是&lt;/div&gt; 这是一个更新的working jsfiddle。另外,记住这是一个插件,所以你需要downloadplugin

    【讨论】:

    • 好吧,我浏览了整个教程,它说我们不需要做任何额外的编码。只需要用数据数组替换数据,模板就会为每个元素生成模板......我不知道为什么它不起作用............
    • 更新了我的答案,您需要先在模板上调用$.template(...),然后再调用$.tmpl(...),如果您仍然遇到问题,您可以使用jsfiddle 更新您的问题。
    • 这里是编译模板的代码。仍然无法正常工作,但它适用于非数组元素。顺便说一句,小提琴似乎无法与模板代码一起正常工作......这是链接jsfiddle.net/7PcFC/2
    • 如果你用电影(单数)替换电影,这是一个非数组对象,它适用于我。
    • 更新:jsfiddle.net/7PcFC/4 你做错的主要事情是在你的模板中,你把
      放在模板的末尾。请注意,在 ${ReleaseYear} 之后,您将
      作为打开 div 而不是应有的关闭 div,它正在中断。
    【解决方案2】:

    我知道这是一个旧线程,但我最近遇到了同样的问题。我尝试了上面提到的jsfiddle.net/7PcFC/8/,在这些浏览器中得到了以下结果:

    Firefox 29:工作

    Chrome 34.0.1847.131 m:不工作

    IE 9.0.8112.16421:不工作

    对于 Chrome 和 IE,它只显示“Hello”

    【讨论】:

      猜你喜欢
      • 2023-03-28
      • 1970-01-01
      • 2016-02-04
      • 2017-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-10
      • 1970-01-01
      相关资源
      最近更新 更多