2013-05-07 14 views
5

Ich benutze Jquery Mobile und Backbonejs. irgendwie stecken mit Backbone-Routing mit Transition-Eigenschaft aktiviert. jeder Vorschlag wird groß sein ..Jquery Mobile Backbone Routing

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

aber der Folienübergang leider nicht funktioniert.


der Code für den Router ist unter

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'); 
}); 
    }); 

können wir nutzen, um cal change hier für den Übergang?

+0

'mobileInit' -Funktion sollte nach dem Laden von jQuery und vor dem Laden von jQuery-Mobile-Skripten in' 'hinzugefügt werden. und verwenden Sie '.on' anstelle von' .live', das veraltet ist. – Omar

+0

@Omar der erste Teil des Codes ist mobileinit Funktion und funktioniert nicht. – Sameertha

Antwort

1

Dies kann in einer Datei init.js sein.

(function ($) {

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

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

}(jQuery)); 

Sie ändern Seite nutzen können, auch wenn das Hash-Hören auf false JQM gesetzt/Rückgrat uns nicht von der Nutzung der Änderung Seite und Hash-Routing stoppt.

Überprüfen Sie diesen Link, um es ein Beispiel in allem eines fiel hat, aber Sie können es in den Controller brechen, das Modell und Ansicht

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

in c ONTEXT auf das obige Beispiel:

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)); 

Modell:

(function ($) {

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

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

} (jQuery));

Ausblick:

(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)); 

Übung kann globale Variable sein.

+0

Wie können wir ViewPage zu ShowPage-Funktion definieren? – Sameertha

+0

meinst du die Ansicht für diese Seite? Es kann eine einfache Seite sein, bevor show oder page show event mit dem Aufruf seiner Render-Methode ODER ein Aufruf an sein Modell mit render bei Erfolg des Modells. – Sheetal

+0

können Sie mir mit einigen Code of View helfen, in Modell oder Sammlung zu gelangen – Sameertha