车把没有接收物体

时间:2014-05-05 22:31:33

标签: javascript handlebars.js

车把拒绝合作。我有这个模板

<script id="edit_client_modal" type="text/x-handlebars-template">

    <fieldset>

        <input type="text" class="" value="{{name}}" />
        <input type="text" class="" value="{{email}}" />
        <input type="text" class="" value="{{phone}}" />                        

    </fieldset>

我尝试用这样的值来填充它

var tr = $(this).closest("tr");
var current_data = {
        "name": $.trim(tr.find("td.contact_name").text()),
        "email": $.trim(tr.find("td.contact_email").text()),
        "phone": $.trim(tr.find("td.contact_phone").text())
    }


var source = $("#edit_client_modal").html();
var template = Handlebars.compile(source); 
var options = {options: current_data};

edit_contact_html = template(options); 

input不会填充值。这里有什么问题?

1 个答案:

答案 0 :(得分:1)

您的模板正在寻找3个属性:{name:'',email:'',phone:''}

但是您传递的对象只有一个options属性。所以它找不到这些值并将它们留空。

你可以:

  • 调整模板以使用options块:

    <fieldset> {{#with options}} <input type="text" class="" value="{{name}}" /> <input type="text" class="" value="{{email}}" /> <input type="text" class="" value="{{phone}}" /> {{/with}} </fieldset>

  • 调整模板以使用正确的路径

    <fieldset> <input type="text" class="" value="{{options.name}}" /> <input type="text" class="" value="{{options.email}}" /> <input type="text" class="" value="{{options.phone}}" /> </fieldset>

  • 单独保留模板并调整javascript以不将这些值包装在选项字段中:

    edit_contact_html = template(current_data);