2013-05-07 15 views
5

Sto usando jquery mobile e backbonejs. kinda bloccato con il backbone routing con la proprietà di transizione abilitata. ogni suggerimento sarà grande ..jquery dorsale mobile backbone

 define(['jquery'], function ($) { 
     $(document).on("mobileinit", function() { 
      $.mobile.ajaxEnabled = false; 
      $.mobile.linkBindingEnabled = false; 
      $.mobile.hashListeningEnabled = false; 
      $.mobile.pushStateEnabled = false; 
      $.mobile.defaultPageTransition = "slide"; 
    }); 
}); 

ma il cambio pagina doesnt funziona.


il codice per il router è sotto

define([ 
'jquery', 
'underscore', 
'backbone', 
'backbone.subroute'], function($, _, Backbone) { 
var AppRouter = Backbone.Router.extend({ 
    routes: { 
     // general routes 
     '': 'defaultAction', 
     'login':'login', 
     'message':'message', 
     'menu': 'mainMenu', 

     // Default 
     '*actions': 'defaultAction' 
    } 
}); 

var initialize = function() { 

     $('.back').live('click', function(event) { 
      event.preventDefault(); 
      window.history.back(); 
      return false; 
     }); 

    var app_router = new AppRouter; 
    app_router.on('route:defaultAction', function(actions) { 
     require(['views/home/register'], function(RegisterView) { 
      // We have no matching route, lets display the home page 
      console.log('At defaultAction'); 
     var registerView = new RegisterView(); 
     registerView.render(); 
      /// this.changePage(loginView, 'slide'); 
     }); 
    }); 

    app_router.on('route:login', function(actions) { 
     require(['views/home/login'], function(LoginView) { 
      // We have no matching route, lets display the home page 
      console.log('At defaultAction'); 
     var loginView = new LoginView(); 
     loginView.render(); 
      /// this.changePage(loginView, 'slide'); 
     }); 
    }); 
    app_router.on('route:mainMenu', function(actions) { 
     require(['views/home/menu'], function(MainMenuView) { 
      console.log('At mainMenu::router'); 
     var mainMenuView = new MainMenuView(); 
     mainMenuView.render(); 
      // this.changePage(mainMenuView, 'slide'); 
}); 
    }); 

possiamo usare per cal changepage qui per la transizione?

+0

La funzione 'mobileinit' deve essere aggiunta in' 'dopo aver caricato jQuery e prima di caricare gli script jQuery-Mobile. e usa '.on' invece di' .live' è deprecato. – Omar

+0

@ Omar la prima parte del codice è la funzione mobileinit e non funziona. – Sameertha

risposta

1

Questo può essere in un file init.js.

(function ($) {

var appRouter = Backbone.Router.extend({ 
      routes: { "": "showActivitiesPage" 
      }, 

      showActivitiesPage: function() {     
       $.mobile.changePage("#activities", { reverse: false, changeHash: false });       
      }   
    }); 

}(jQuery)); 

È possibile utilizzare la pagina cambiamento, anche quando l'ascolto di hash è impostata su false jQm/spina dorsale non ci ha impedito di utilizzare il cambio pagina e hash di routing.

controlla questo link ha un esempio in tutti uno fiel ma si può rompere in regolatore, il modello e vista

http://blog.chariotsolutions.com/2011/12/introduction-to-backbonejs-with-jquery.html

in c ONTESTO all'esempio precedente:

Controller:

(function($){ 
$('#activities').live('pageinit', function(event){ 
    var activitiesListContainer = $('#activities').find(":jqmData(role='content')"), 
     activitiesListView; 
    exercise.initData(); 
    activitiesListView = new exercise.ActivityListView({collection: exercise.activities, viewContainer: activitiesListContainer}); 
    activitiesListView.render(); 
}); 

}(jQuery)); 

Modello:

(function ($) {

exercise.Activity = Backbone.Model.extend({ 
}); 

exercise.Activities = Backbone.Collection.extend({ 
    model: exercise.Activity, 
    url: "exercise.json" 
}); 

} (jQuery));

Vista:

(function($){ 
exercise.ActivityListView = Backbone.View.extend({ 
     tagName: 'ul', 
     id: 'activities-list', 
     attributes: {"data-role": 'listview'}, 

     initialize: function() { 
      this.template = _.template($('#activity-list-item-template').html()); 
     }, 

     render: function() { 
      var container = this.options.viewContainer, 
       activities = this.collection, 
       template = this.template, 
       listView = $(this.el); 

      $(this.el).empty(); 
      activities.each(function(activity){ 
       listView.append(template(activity.toJSON())); 
      }); 
      container.html($(this.el)); 
      container.trigger('create'); 
      return this; 
     } 
    }); 
}(jQuery)); 

esercizio può essere variabile globale.

+0

Come possiamo definire viewPage per mostrare la funzione PAGE? – Sameertha

+0

intendi la visualizzazione di questa pagina? Può essere una semplice pagina prima dell'evento show o page show con la chiamata al suo metodo di rendering OPPURE una chiamata al suo modello con rendering in successo del modello. – Sheetal

+0

puoi aiutarmi con un certo codice di vista per entrare nel modello o nella collezione – Sameertha