说我的javascript有以下部分内容:

Handlebars.registerPartial('itemcount', '<div class="row"><div class="count span1">{{count}}</div><div class="notes span4">{{notes}}</div>/div>');

并像这样使用它:
    {{#each item_counts}}
      {{> itemcount }}
    {{/each}}

我如何在jQuery回调中使用“itemcount”部分(类似)?
$.ajax({
  url: '/arc/v1/api/item_counts/',
  type: 'POST',
  data: {item_count:{inventory_item_id: id_val, count:count_val, date:date_val, notes:notes_val}},
  dataType: 'json'
}).done(function(r){
  var item_count=r.item_count;
  // here is where I would want to get access to this and
  //var template = Handlebars.compile(source, item_count); ????

  $('.itemcount-header').after('this is after');
});

感谢任何帮助

最佳答案

注册部分时,源将存储在关联密钥下的Handlebars.partials中。然后,您可以在运行时编译此源,并将结果函数用作常规模板:

$.ajax({
    // ...
}).done(function(r){
    var item_count = r.item_count;
    var markup = Handlebars.compile(Handlebars.partials.itemcount, {
        count: item_count
    });
});

如果多次重复使用,也可以将预编译模板注册为部分模板:
Handlebars.registerPartial('itemcount',  Handlebars.compile(src));

$.ajax({
    // ...
}).done(function(r){
    var item_count=r.item_count;
    var markup = Handlebars.partials.itemcount({
        count: item_count
    });
});

请注意,注册已编译的部分时,无需在主模板中进行任何更改。

和演示http://jsfiddle.net/nikoshr/9La3p/

关于javascript - 从jQuery调用Handlebars部分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23001550/

10-11 05:44