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

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

我有以下 ItemView(没有与 View 关联的模型,它是一个非常基本的“表单”,具有提交或取消和单个输入字段):

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();
    }

});

因此默认情况下,此 View 是隐藏的(但在应用程序启动时实例化)。

我想要一个按钮,单击该按钮后,只需将属性样式显示更改为阻止即可。

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

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

但是,我宁愿调用 View 的 $el.attr 并在那里编辑它,大致如下:

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

但是,这会返回一个未定义的值,并且我看不出有什么方法可以检索 View 的属性(对于使用 .get() 的模型来说很容易),但这不适用于 View 。

感谢您的建议。

加里

最佳答案

App.BasicForm 不是实例,因此它不包含元素。您需要初始化它,然后就可以使用 $el 引用该元素:

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

关于javascript - Backbone - 在 ItemView 之外访问 View 的 $el.attr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25977095/

相关文章:

javascript - 如何根据单元格值修改或类似于 @model.count 的计数行

javascript - 更新模型但保留整个 Backbone 集合

javascript - 为什么 dom 元素作为窗口对象的属性存在?

javascript - 如果它是多维数组或对象或两者,如何从 Meteor 集合中获取元素?

javascript - 如何将文本框动态添加到单击编辑的文本部分?

javascript - Backbone/Underscore sortBy 不是排序集合

javascript - 如何从 Backbone/Coffee 中的另一个 View 函数访问我的 @map 对象?

javascript - 如何从具有 Datetime 属性的 IEnumerable 对象列表中的 Ajax 调用正确序列化 Datetime

objective-c - 仅通过模型 Controller (API 包装器)更新模型对象的最佳方法是什么

javascript - 仅在 Ember.js 提交后保留数据