我正在尝试使用HandleBars JS,到目前为止它主要用于工作。但是我遇到了一个有趣的问题。
我正在尝试让HandleBars呈现具有三个文本字段的用户输入表单。为了测试,我已经将构建这三个文本字段所需的JSON字符串粘贴到我的文档中,并且它可以很好地工作。但是,当我使用$ .getJSON并在呈现文本字段时通过ajax调用完全相同的JSON字符串时,不会对表单应用CSS或jQuery规则。
我知道这是因为在这一点上调用了Document Ready,因为我在静态字符串周围添加了一个Document Ready,并且发生了同样的事情,他们没有呈现任何CSS或JS规则。
有没有办法可以重新强制所有jQuery和CSS规则刷新?或者我怎样才能让它发挥作用?
另外,请注意这是不 jQuery Mobile。
非常感谢提前..请在投票前询问您是否有任何问题。
编辑 - 这是代码:
静态版
var source = $("#form-template").html();
var template = Handlebars.compile(source);
var data = {
info: { id: 'longbeach2012', name: 'Long Beach 2012' },
forms: [
{id: "1", label: "This is a label", description: "", type: "text", name: "t1", username: "alan" },
{id: "2", label: "This is a label2", description: "description2", type: "text", name: "t2", username: "allison" },
{id: "3", label: "This is a label3", description: "description3", type: "text", name: "t3", username: "ryan" }
]};
var example = {title: "Sample Title", body: "Sample Body"};
$("#testForm").html(template(data));
动态版
$.getJSON('http://register.local.dev/fetchtemplate',
{
language: 'english',
formid: 'longbeach2012'
},
function(data) {
$.each(data, function(i,item){
if( item.elem_type === 'text' )
{
var source = $("#textinput-template").html();
var template = Handlebars.compile(source);
$("#testForm").append(template(item));
}
});
});
把手模板
<script id="textinput-template" type="text/x-handlebars-template">
<div id="q{{elem_id}}">
<div class="small">{{trans_label}}{{#if trans_description}}</br />
<span class="notice">{{trans_description}}</span>{{/if}}</div>
<input type="{{elem_type}}" name="{{elem_name}}" id="{{elem_name}}" value="{{trans_defaultValue}}" tabindex="1" autocomplete="off" />
</div>
答案 0 :(得分:0)
我明白了。
我从准备好的文档中删除了大部分javascript代码,并在getJSON运行完毕后调用了一个执行javascript其余部分的函数。