无法在骨干视图中访问模板的DOM元素

时间:2013-02-09 08:33:11

标签: jquery backbone.js

我有这样的观点:

var InvoiceForm = Backbone.View.extend({
    template: _.template(addform),
    initialize: function () {
        this.$("#buyer").val("test");
    }
});

我有包含买家ID元素的模板addform。这不是设置值。我知道我在做一些愚蠢的事情:)

2 个答案:

答案 0 :(得分:2)

视图中的骨干模板不会自动呈现。实际上在Backbone documentation中,有一些例子可以帮助你做到这一点。

如果您在视图中使用模板,应该在初始化时渲染,您可以像这样编写代码:

var InvoiceForm = Backbone.View.extend({
    template: _.template(addform),
    render: function() {
        this.$el.html(this.template());
        return this;
    },
    initialize: function () {
        this.render(); // Rendering your template in your this.el element
        this.$("#buyer").val("test"); // Setting the value of #buyer in your template
    }
});

您可以稍后使用此视图:

var form = new InvoiceForm({ el: $("#wrapper_for_invoiceform") });

检查这个小提琴中的演示:http://jsfiddle.net/hsn7J/

答案 1 :(得分:1)

如果您尝试在点击事件上执行此操作 - 要更改为“测试”值,您可以使用以下内容执行此操作

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

    render: function() {
            this.$el.html( this.template(this.model.toJSON()) );
            this.input = this.$('#buyer');
            return this;
        },

    events: {
     'click #buyer' : 'editValue',
    },

    editValue: function(){
        this.input.val("test");
    }