Ankündigung

Einklappen
Keine Ankündigung bisher.

Backbone routen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Backbone routen

    Ich bin völlig neu im routen, deswegen seh ich da noch weniger als sonst -> also mal thread.

    Code:
    // meine thumbs so in der art
    
    var thumbView  = pictureView.extend({
      events: {
            'click': 'navigate'
      },   
      navigate: function(el) {
    	var rt = this.model.attributes.hash;
     	Backbone.history.navigate('pic' + rt);
            return false;
      }
    });
    /****************************/
    
    
    // mein router -- so ind der art
    
    var ThumbsApp = Backbone.Router.extend({
         routes: {
            'pic:id': 'display'
          },
        initialize: function(list) {
            this.list = list;
        },
       display: function(id) {
    	  console.log('id'); 
    	  console.debug(id);
        }
    });
    /*****************************************/
    
    
    // der aufruf
    var al = new aList();  
    var view =  new siteView({collection : al, el: '#container'});
    var app = new ThumbsApp(al);
    Backbone.history.start({pushState: true, root: '/htdocs/ansichten', replace: true});
    soweit funktioniert da was, die seite wird aufgebaut, ein klicken auf meine divs wird abgefangen, die adresszeile oben im browser wird geändert.

    gut, hab ich gedacht, sind die routen falsch.

    klick ich aber auf zurück ( im browser), ändert sich nicht nur die adresszeile, sondern es werden auch die debug meldungen von ThumbsApp.display() ausgegeben.

    was mach ich also grundsätzlich falsch?

  • #2
    soll so heissen:
    Code:
    Backbone.history.navigate('pic' + rt, {trigger: true});

    Kommentar


    • #3
      bleibt noch ne andere frage:
      Code:
        Backbone.history.start({pushState: true, root: rootDir, replace: true});
         var regStr = new RegExp(rootDir, 'g');
         var subPath =  window.location.pathname.replace(regStr, "");
         Backbone.history.navigate(subPath , {trigger: true});
      mit dem Code wollte ich abfangen, ob - durch lesezeichen, link verschicken oder ähn. - schon eine route aktiv/ist sein sollte, und deswegen ThumbsApp.display(id), getriggerd werden sollte. passiert aber leider nichts.
      wo ist denn da der gedankenfehler ?
      muss man das bei ThumbsApp.initialize() machen?

      //update:
      Hab jetzt mit dem zusatz in initialisieren des Routers gemacht, auch wenn ich es nicht schön finde:
      Code:
      // (..) 
         var regStr = new RegExp('here-goes-my-pattern', 'g');
           var id  =  Backbone.history.fragment.match(regStr);
          if(id) { 
            this.display(id[0]);
            }
            else{
      	var model =  list.models[0].get('picture');
      	 this.view =  new BigPictureView({handle: '', 
      					 model: model, 
      					 el: node, class: '' ,fit: true}).render();
            }

      Kommentar

      Lädt...
      X