2011-01-05 3 views
0

Ich denke über die Portierung meiner aktuellen Anwendung auf JavascriptMVC + RESTfull Web Services. Ich bin mir jedoch nicht sicher, ob ich mit JavascriptMVC Lesezeichen-URLs erstellen kann.Unterstützt JavascriptMVC Lesezeichen-URLs?

Zum Beispiel: die Webapp ist ein App Kurse zu hosten, und URLs wie

/Kurse/RDBMS/Vortrag/1

Ist es möglich, solche URLs mit JavaScriptMVC zu schaffen?

Antwort

2

Sie könnten jQuery.address (http://www.asual.com/jquery/address/) verwenden, um Ihre URLs zu verwalten.

Mit jQuery.address können Sie crawlbare URLs wie "http://example.com/#!/user/5" festlegen und auf Adressänderungen achten und entsprechend agieren.

In meinem eigenen Code, habe ich einen Adresse-basierten Router aus der Diebstahl-Konfigurationsdatei wie folgt eingerichtet.

steal.plugins(
      'jquery/controller', 
      'jquery/controller/subscribe', 
      'jquery/view/ejs', 
      'jquery/controller/view', 
      'jquery/model', 
      'jquery/dom/fixture', 
      'jquery/dom/form_params', 
      'steal/less')     
    .css('css/vendor/reset-fonts-grids') 
    .resources('vendor/jquery.address-1.3.1.min.js') 
    .models('user') 
    .controllers('user') 
    .views() 
    .then(function() { 
     steal.less('css/style'); 

     // Set up a router 
     $.address.baseURL('/basePath'); 

     // $.address.crawlable(true); 
     $.address.change(function(event) { 
      var path = event.path; 
      switch(true) { 
      // Matches http://example.com/#!/ or http://example.com/ 
      case /^\/$/.test(path): 
       $('#page').empty(); 
       break; 
      // Matches http://example.com/#!/user/42/profile 
      case /^\/user\/[0-9]+\/profile/.test(path): 
       var userId = path.split("/")[2]; 
       // Instantiate and load a controller 
       new User.Controllers.User($('body'),userId); 
       break; 
      case /^\/search/.test(path): 
       $.log('search'); 
       break; 
      default: 
       $.log(event.path); 
      } 
     }); 
    }); 

Sie können dann eine neue Seite von HTML-Land rufen über

<a href="/" onclick="$.address.value('/'); return false;">root url</a> 

Oder von JS Land über

$.address.value('/user/10/profile');