渲染模板从Backbone中的模型获取数据

时间:2013-12-16 11:55:53

标签: backbone.js backbone-views

我在使用我的模型中获取数据时,在渲染我的视图时遇到了一些问题,所以我很感激任何帮助。这是我的HTML代码:

<ul id="datos">

</ul>

<script type="text/template" id="listado-template"> 
    <h2>Mi listado</h2>
    <li>Item 1: <%= item1 %></li>
</script>

<script>
    modelo = new Modelo();    
    modeloView = new ModeloView({model: modelo});
</script>

这是我的模特和观点:

Modelo = Backbone.Model.extend({
    urlRoot: 'myurljson',
});

Backbone.View.extend({ 
    tagName: "ul",

    el: "#datos",

    template: _.template($('#listado-template').html()),

    initialize: function() {    
        this.model.on('change', this.render, this); 
    },

    render: function() {
        this.$el.append(this.template(this.model.toJSON()));
        return this;
    }
});

问题是我的模板没有很好地重新定位。我在item1收到了一个未定义的错误。但是,如果我删除此标记li,则会重新标记标记h2,因此我猜问题是通过“myurljson”从我的模型中获取数据。有帮助吗?谢谢!

1 个答案:

答案 0 :(得分:2)

如果您尝试渲染未定义的变量,则下划线将失败。看到这个小提琴尝试重现您的问题:http://jsfiddle.net/nikoshr/PELfV/

你可以

  • 在模型中定义具有合理值的默认item1属性

    Modelo = Backbone.Model.extend({
        urlRoot: 'myurljson',
        defaults: {
            item1: ''
        }
    });
    

    http://jsfiddle.net/nikoshr/PELfV/1/

  • 上的演示
  • 或在打印前测试该值

    <script type="text/template" id="listado-template"> 
        <li>Item 1: <% if (typeof item1!=="undefined") print(item1) %></li>
    </script>
    

    及其演示http://jsfiddle.net/nikoshr/PELfV/2/