【问题标题】:backbone.js not picking up model context主干.js 没有获取模型上下文
【发布时间】:2012-11-21 15:13:47
【问题描述】:

请参阅以下fiddle

HTML

<script id="person" type="text/x-handlebars-template">        
    <div>Title : {{title}} </div>  
    <div>First Name : {{firstname}}</div>
    <div>Last Name : {{lastname}}</div>                      
</script>
<div id="people"></div>

JS

(function ($) {
       var personTemplate= Handlebars.compile($("#person").html());

       var Person= Backbone.Model.extend({
           title: null,
           firstname : "",
           lastname : ""
        });

        PersonView = Backbone.View.extend({
            tagName: "div",
            template:  personTemplate,
            render: function () {
                $(this.el).html(this.template(this.model));
                return this;
            }
        });

        $(document).ready(function () {
        var AppView = Backbone.View.extend({
            initialize: function () {              
                var passView = new PersonView (
                    { model: new Person({ title: "Mr",
                                          firstname : "John",
                                          lastname : "Smith"})
                    });

                $('#people').append(passView.render().el.outerHTML);
            }
        });

        var App = new AppView();
    });
})(jQuery);

我已经创建了一个基本模式和视图,但是模板没有获取视图的参数。如果我直接在人模型上设置值,它会找到它们。但如果我通过模式的新实例设置它们(或者即使我使用 init 方法对它们进行 .set() 设置。

我做错了什么?

【问题讨论】:

  • 我想你忘记了模型上的toJSON(),试试$(this.el).html(this.template(this.model.toJSON()));
  • 就是这样!您可以将其记录为答案吗?谢谢!

标签: backbone.js handlebars.js


【解决方案1】:

为了获得一个用于模板的对象,您需要调用模型的toJSON 方法。

例如

PersonView = Backbone.View.extend({
            tagName: "div",
            template:  personTemplate,
            render: function () {
                $(this.el).html(this.template(this.model.toJSON()));
                return this;
            }
        });

如果您在 Firebug 中检查您的模型之一(或只是将其输出到控制台),您会注意到除了您指定的属性之外,还有更多的属性,并且您指定的值实际上包含在属性 attributes,调用 toJSON 会返回一个具有您指定的模型 "values" 的对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-22
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多