将模型绑定到骨干客户端模板

时间:2011-06-30 19:16:02

标签: backbone.js

我有以下backbone.js客户端模板:

<script id="calleeTemplate" type="text/x-jquery-tmpl">
<tr style="background-color: ${StatusColour}">
    <td class="responder">${ContactFullName}</td>
    <td class="status" style="width:200px">${Status}</td>
    <td class="replied">${Replied}</td>
    <td class="wauto">${Response}</td>
</tr>
</script>

为了能够绑定到这些属性,我有一个视图的以下渲染方法:

App.Views.Callees = Backbone.View.extend({
  initialize: function () {

  },
  el: $('#calleesStatuses'),
  render: function () {
    var col = _.map(this.collection.models, function (item) {
        return item.attributes;
    });

    $('#calleesStatuses').html('');
    $('#calleeTemplate').tmpl(col).appendTo(this.el);
  }
});

我必须使用模型中的下划线_.map函数提取属性。我认为这是因为骨干使用.get("property")来提取属性值。

这对我来说似乎不对,我做错了吗?

1 个答案:

答案 0 :(得分:2)

你是对的,你必须转换数据才能使用tmpl轻松使用它。

但是,最好使用toJSON而不是直接访问属性。最好避免直接调用.models

无论如何,骨干集合都有一整套underscore.js枚举器。因此,您可以将转换减少到一行:

var col = this.collection.invoke('toJSON')