2013-04-10 11 views

Odpowiedz

4

Nie ma obecnie obsługiwanej metody wykonywania tej czynności. App.Router.map połączenie jest obsługiwane przez linie 235-247 tego kodu: https://github.com/emberjs/ember.js/blob/master/packages/ember-routing/lib/system/router.js

Ember.Router.reopenClass({ 
    map: function(callback) { 
     var router = this.router = new Router(); 

     var dsl = Ember.RouterDSL.map(function() { 
      this.resource('application', { path: "/" }, function() { 
      callback.call(this); 
      }) 
     }); 

     router.map(dsl.generate()); 
     return router; 
    } 

Mapa jest zastępowane za każdym razem, kiedy zadzwonić Router.map jako zwrotnego w poprzednim wywołaniu Router.map nie jest zachowywane.

Edit Lepiej lub gorzej, mam prośbę ciągnącego się, by zmienić zachowanie, aby umożliwić wielu połączeń do App.Router.map. Zobaczymy co się stanie. Możesz śledzić tutaj https://github.com/emberjs/ember.js/pull/2485

Kolejna Edycja

Napisałem sens robienia tego, co robi moja prośba ciągnąć w przestrzeni użytkownika. Umożliwi to mapowanie tras w czasie wykonywania. Wystarczy dodać ten kod, a następnie zastąpić połączeń na App.Router.map metodą, że mam zdefiniowanej

https://gist.github.com/grep-awesome/5406461

Odbierz Zmiana Edycja

Jak to żądanie ciągnącej, można teraz połączyć map wielokrotnie . https://github.com/emberjs/ember.js/pull/2892

1

Widzę, że odpowiedź wmarbut nie została przyjęta, ale jest dobra (dla mnie). Wydaje się, że jego łatka jest w drodze do wydania Ember, ale do tego czasu jest to kod, który używa jego łaty. (Nie akceptuję mojej odpowiedzi, po prostu cieszę się, że to znalazłem.) Zamierzam użyć jej jako części rozwiązania, które pozwoli na nawigację zawartości. Dobre pytanie, user1517325 i dzięki, wmarbut!

// was an all-in-one router map as Ember likes it 
    // App.Router.map(function() { 
    // this.resource("foods", function(){ 
    //  this.route("index", {path: "/"}); 
    // }); 
    // this.route("fourOhFour", { path: "*:"}); 
    // }); 

    //wmarbut's workaround until his patch is applied 
    App.map_routes = []; 

    App.MapRoutes = function(routes) { 
     App.map_routes.push(routes); 
     return App.Router.map(function() { 
     var route_lamda, _i, _len, _ref; 
     _ref = App.map_routes; 
     for (_i = 0, _len = _ref.length; _i < _len; _i++) { 
      route_lamda = _ref[_i]; 
      route_lamda.call(this); 
     } 
     return true; 
     }); 
    }; 

    //partial mapping 
    App.MapRoutes(function() { 
    this.resource("foods", function(){ 
    }); 
    }); 

    //some more mapping 
    App.MapRoutes(function() { 
    this.resource("foods", function(){ 
     this.route("index", {path: "/"}); 
    }); 
    }); 

    //even more mapping 
    App.MapRoutes(function() { 
    this.route("fourOhFour", { path: "*:"}); 
    }); 
1

W najnowszym wydaniu ember.js RC7 została dodana funkcjonalność do Router.map aby mogła ona być wywołana wiele razy bez mapy są nadpisywane. Umożliwi to dodawanie tras w środowisku wykonawczym.

Mam nadzieję, że to pomaga.

Powiązane problemy