javascript - Toteuta vaihtaminen Backbone.js-tapahtumissa
Haluaisin toteuttaa käännettävän animaation Backbone:ssa samalla tavalla kuin teemme sen jquery:ssä:
$('a.contact').toggle(
function(){
// odd clicks
},
function(){
// even clicks
});
kysymykseni on, kuinka tehdä tämä backbonen tapahtumasynaksissa? Kuinka minä matkin funktiota, funktioasetusta?
events : {
'click .toggleDiv' : this.doToggle
},
doToggle : function() { ??? }
Vastaus #1
Backbonen näkymä tapahtumat välittää suoraan jQuerylle ja antaa sinulle pääsyn kaikkiin tavanomaisiin DOM-tapahtumien argumentteihin palautusmetodin kautta. Joten voit helposti kutsua jQueryn toggle-metodia elementissä:
Backbone.View.extend({
events: {
"click a.contact": "linkClicked"
},
linkClicked: function(e){
$(e.currentTarget).toggle(
function() {
// odd clicks
},
function() {
// even clicks
}
);
}
});
Vastaus #2
Etsin ratkaisua tähän ongelmaan ja menin siihen vanhanaikaisella tavalla. Halusin myös pystyä löytämään hideText()-metodini muiden näkymien kautta sovelluksessani.
Joten nyt voin tarkistaa 'showmeState' -tilan mistä tahansa muusta näkymästä ja suorittaa joko hideText() tai showText() sen mukaan, mitä haluan tehdä sen kanssa. Olen yrittänyt yksinkertaistaa alla olevaa koodia poistamalla asioita, kuten render ja initialize, jotta esimerkistä tulisi selkeämpi.
var View = Backbone.View.extend({
events: {
'click': 'toggleContent'
},
showmeState: true,
toggleContent: function(){
if (this.showmeState === false) {
this.showText();
} else {
this.hideText();
}
},
hideText: function() {
this.$el.find('p').hide();
this.showmeState = false;
},
showText: function() {
this.$el.find('p').show();
this.showmeState = true;
}
});
var view = new View();
