简体   繁体   English

Backbone.js视图

[英]Backbone.js View

I'm learning Backbone.js now. 我正在学习Backbone.js。 I'm writing mvc Todo list for study. 我正在写mvc Todo列表进行研究。 I have a code like this: 我有这样的代码:

   var TaskView = Backbone.View.extend({
    el: '#tasks',
    model: Todo,
    events: {
        'click > li .delete-task' : 'removeTask',
        'click > li .complete-task' : 'completeTask'
    },
    removeTask : function () {
        console.log(this.get('model'));
    },
    completeTask : function () {

    }
});

So, I can't get .delete-task, when was a click. 因此,单击时我无法获得.delete-task。 For example, If i click on .delete-task in third li, I want to get a third li. 例如,如果我单击第三李中的.delete-task,我想获得第三李。 How I can realize it? 我怎么能实现呢?

I find an answer. 我找到答案。 I should write a code like this: 我应该写这样的代码:

var TaskView = Backbone.View.extend({
        el: '#tasks',
        model: Todo,
        events: {
            'click > li .delete-task' : 'removeTask',
            'click > li .complete-task' : 'completeTask'
        },
        removeTask : function (e) {
            console.log($(e.target));
        },
        completeTask : function () {

        }
    });

$(e.target) is current element. $(e.target)是当前元素。

You can use currentTarget to do the trick. 您可以使用currentTarget来解决问题。

TaskView = Backbone.View.extend({
    el: '#tasks',
    events: {
        'click .delete-task' : 'removeTask'
    },
    removeTask : function (e) {
        alert($(e.currentTarget).text())
    },
});

demo 演示

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

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