Passing parameters into the Backbone events object of a backbone view

后端 未结 4 575
梦谈多话
梦谈多话 2020-12-13 00:06

I have the following events for a Backbone View. Its a product view - with three tabs (\"All\", \"Top 3\", \"Top 5\")

Can I somehow pass a parameter into the method

相关标签:
4条回答
  • 2020-12-13 00:18

    You could put the extra argument in a data attribute on the clickable item instead; something like this:

    <a id="top-all" data-pancakes="1">
    

    And then topProducts can figure it out itself:

    topProducts: function(ev) {
        var pancakes = $(ev.currentTarget).data('pancakes');
        // And continue on as though we were called as topProducts(pancakes)
        // ...
    }
    
    0 讨论(0)
  • 2020-12-13 00:24

    I generally prefer to do something like this:

    events : {
       "click #top-all":    function(){this.topProducts(1);}
       "click #top-three":  function(){this.topProducts(2);}
       "click #top-ten":    function(){this.topProducts(3);}
    },
    topProducts(obj){
       // Do stuff based on obj value
    }
    
    0 讨论(0)
  • 2020-12-13 00:24

    What you can do, is just check the id of the element which is received as currentTarget in arguments.

    topProduct: function (e) {
        var id = e.currentTarget.id;
        if (id == "top-all") // Do something
        else if (id == "top-5") // Do something
        else if (id == "top-3") // Do something
    }
    
    0 讨论(0)
  • 2020-12-13 00:35

    You can do so using closures:

    EventObject.on(event, (function(){
        var arg = data; // Closure preserves this data
        return function(){
            doThis(arg);
        }   
    })());
    
    0 讨论(0)
提交回复
热议问题