繁体   English   中英

访问视图中的元素-Backbone.JS

[英]Accessing elements inside a view - Backbone.JS


编辑:已解决

代码中有两个错字,一个错字,另一个错字,非常感谢,很抱歉!

你好,

我当前的问题是在浏览Backbone.js时发生的

我使用主干创建了一个简单的HTML表,每一行都是一个模型,所有行的集合都传递给一个呈现所有内容的视图-到目前为止,一切都很好。

我的表具有以下类:每个表单元格都有一个.tablecell类,每行都有一个.tablerow类。

我目前有一个单击事件,每次单击表格单元格时都会正确触发。 我想弄清楚的是,如果可能的话,我该如何访问“已单击”表格单元并更改其属性。 作为一个简单的示例,更改单击的单元格的类或更改背景颜色。

还能做到吗? 还是我完全错过了什么?

我目前的想法是,每个单元都必须是自己的模型,具有自己的观点和事件,但是我怀疑它是否会如此复杂。 提前致谢!

我的唯一观点是这样的:

            var rowView = Backbone.View.extend({

                //usual view attributes : el, model, initialize etc.

                events : 
                    {
                    "click.tablecell" : "clickOnCell",
                    },

                    clickOnCell : function(cell)
                    {
                        cell = $(cell.currentTarget);
                        cell.css("font-weight","bold");
                    },
                render : function () {

        // boring render method, renders correctly.

                },  
            });

您必须将事件和处理程序添加到events哈希中(示例中缺少空格):

events: { 'click .tablecell': 'clickOnCell' }

您收到jQuery(或您要替换为jQuery的另一个框架)事件对象:

clickOnCell: function (e) {

    var $td = $(e.currentTarget);

    $td.css('color', 'red');

}

了解事件委派发生在视图实例化的末尾。 那样的话,我的意思是您的视图必须具有el属性作为行。

如果无法在视图定义期间设置el属性(似乎是这种情况),请尝试在render期间将setElement表行元素。

render: function () { 

   //...

   var myRow = $('<tr/>');

   this.setElement(myRow);        

   //...

}

希望我有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM