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



我在主干中呈现视图时遇到了一些问题,无法从模型中获取数据,因此我非常感谢您的帮助。这是我的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"从我的模型中获取数据。有什么帮助吗?非常感谢。

Undercore将失败,如果您尝试呈现未定义的变量。看到这个Fiddle试图重现你的问题: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/

最新更新