óptica una qué optica mexico historia fibra enfoque definición data cuál backbone javascript backbone.js

javascript - una - lan backbone



Pasar parámetros al objeto de eventos Backbone de una vista de red troncal (4)

Tengo los siguientes eventos para una Vista Backbone. Es una vista del producto - con tres pestañas ("Todos", "Top 3", "Top 5")

¿Puedo de alguna manera pasar un parámetro a la declaración de método para que sea equivalente al siguiente (esto no funciona)?

events : { "click #top-all": "topProducts(1)" "click #top-three": "topProducts(2)" "click #top-ten": "topProducts(3)" }, topProducts(obj){ // Do stuff based on obj value }


Lo que puede hacer, es simplemente verificar el ID del elemento que se recibe como currentTarget en los argumentos.

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 }


Podría poner el argumento extra en un atributo de datos en el elemento cliqueable; algo como esto:

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

Y luego topProducts puede resolverlo por sí mismo:

topProducts: function(ev) { var pancakes = $(ev.currentTarget).data(''pancakes''); // And continue on as though we were called as topProducts(pancakes) // ... }


Por lo general, prefiero hacer algo como esto:

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 }


Puedes hacerlo usando cierres:

EventObject.on(event, (function(){ var arg = data; // Closure preserves this data return function(){ doThis(arg); } })());