【问题标题】:Jquery template not accepting dash (-)Jquery 模板不接受破折号 (-)
【发布时间】:2013-04-18 20:06:47
【问题描述】:

我有以下代码。我在哪里使用 Jquery 模板,但它不接受 - (dash) in class-no。我收到一个错误Uncaught ReferenceError: no is not defined。 jquery模板有没有解决这个问题的方法。

var json = [{"class-no":"12","marks":"500","marks1":"200","marks2":"300"},{"class-no":"11","marks":"200","marks1":"300","marks2":"400"}]

$.template('kList','<tr title="${class-no}"><td>${marks}</td><td>${marks1}</td><td>${marks2}</td></tr>');  

for(var i=0; i<json.length; i++){   
    $.tmpl('kList',json[i]).appendTo("#table1")
}

【问题讨论】:

  • 很可能需要用引号括起来。目前它正在尝试从class中减去no
  • 你能解决这个问题吗?我知道如果不正确使用 console.log(json[0]["class-no"]);但要让它在模板中成为可能
  • @NickTomlin,请检查整个问题是否有错误,而不仅仅是标题。
  • 尝试将连字符改为下划线。如果还是不行,那就怀疑别的了。
  • 您的意思是将模板中的连字符更改为下划线,或者您希望我在 json 中进行更改

标签: jquery jquery-templates


【解决方案1】:

只需在模板调用时在选项参数中提供一个自定义函数,并将模板中的函数用作,

这里的classNo 是一个自定义函数,它使用字符串表示法访问对象属性。

$.template('kList','<tr title="${$item.classNo()}"><td>${marks}</td><td>${marks1}</td><td>${marks2}</td></tr>');  

for(var i=0; i<json.length; i++){   
    $.tmpl('kList',json[i], { 
        classNo : function(){ 
            return this.data["class-no"];
        }
    }).appendTo("#table1");
}

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 2013-10-24
    • 2015-03-18
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    相关资源
    最近更新 更多