Backbone - 在ItemView外部访问View的$ el.attr

时间:2014-09-22 14:54:44

标签: javascript backbone.js model-view-controller marionette backbone-views

我有以下ItemView(没有与视图关联的模型,它是一个非常基本的"形式"它有一个提交或取消和一个输入字段):

App.BasicForm = Backbone.Marionette.ItemView.extend({
    template: "build/templates/basic-form.html",
    tagName: "div",
    attributes: {
        id: "some-id",
        style: "display: none;"
    },

    events: {
        "click button#bf-submit": "bfSubmit",
        "click button#bf-close": "bfClose"
    },

    bfSubmit: function() {
        var bfInputField= document.getElementById('bfSomeData').value;
    },

    bfClose: function() {
        this.$el.hide();
    }

});

因此,默认情况下,此视图是隐藏的(但在App启动时会实例化。)

我想要一个按钮,当点击它时,只需将属性样式显示更改为阻止。

我可以这样轻松地做到这一点:

document.getElementById('bfBasicFormDiv').style.display = "block";

但是,我宁愿调用视图的$ el.attr并在那里进行编辑,其中包括:

App.BasicForm.$el.attr({style: "display: block;"});

然而,这会返回一个未定义的,我看不到检索视图属性的方法(使用.get()模型很容易),但这并不适用于视图。

感谢您的任何建议。

加里

1 个答案:

答案 0 :(得分:1)

App.BasicForm不是实例,因此它不包含元素。您需要初始化它,并且您将能够使用$el

引用该元素
var basicForm = new App.BasicForm({
    el: document.getElementById('bfBasicFormDiv')
});
basicForm.$el.css({display: "block"});