【问题标题】:Accessing model data from a view with backbone.js使用backbone.js 从视图访问模型数据
【发布时间】:2012-11-12 13:14:19
【问题描述】:

我有以下代码,但我很难让我的视图呈现模板而不是我的模型。如果我通过我的模型渲染车把模板但想将我的代码分离到视图中,这一切都很好。

var DataModel = Backbone.Model.extend({
    initialize: function () {
        $.getJSON('js/data.json',function(data){
            $('.one-wrapper').append(Handlebars.compile($('#one-template').html())(data));
            $('.one-asset-loader').fadeOut('slow');
        });
    },

    defaults : function () {

    },

});

var StructureView = Backbone.View.extend ({
    initialize: function () {
    }
});

var structureView = new StructureView({model: new DataModel()});

【问题讨论】:

  • 你的模型不应该做任何直接的 DOM 操作。您应该有一个视图来处理模型状态更改所提示的内容。

标签: json backbone.js views models


【解决方案1】:

您可以使用this.model 访问视图内的模型。

您的代码应该类似于:

var StructureView = Backbone.View.extend ({
    initialize: function () {
        _.bindAll(this);
        this.render();
        this.model.on('change',this.render);
    },
    render: function() {
        $('.one-wrapper').empty().append(Handlebars.compile($('#one-template').html())( this.model.toJSON() ));
    }
});

假设您的模型实际包含数据,这将起作用。为此,您需要使用model.urlmodel.fetch()(不是$.getJSON

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 2014-12-22
    相关资源
    最近更新 更多