SORU
10 Mayıs 2014, CUMARTESİ


AngularJS UI - devlet yeniden url Yönlendirici değiştirin

Şu anda projemiz varsayılan $routeProvider ve bu kullanıyorum kullanıyor"", sayfa yeniden olmadan: url değiştirmek için . hack

services.service('$locationEx', ['$location', '$route', '$rootScope', function($location, $route, $rootScope) {
    $location.skipReload = function () {
        var lastRoute = $route.current;
        var un = $rootScope.$on('$locationChangeSuccess', function () {
            $route.current = lastRoute;
            un();
        });
        return $location;
    };
    return $location;
}]);

ve controller

$locationEx.skipReload().path("/category/"   $scope.model.id).replace();

İç içe geçme yolları ui-router 11 *değiştirmeyi düşünüyorum, ama cant ui-router Bu bulabilirsiniz.

- angular-ui-router ile aynı yapmak mümkün mü?

Neden buna ihtiyacım var? Bana bir örnek ile açıklamaya çalışalım
Yeni kategori oluşturmak için rota /category/new TASARRUF clicking sonra success-alert oldum /caterogy/23 (23 - yeni öğe db saklanan kimliği) yönlendirmek /category/new değiştirmek istiyorum

CEVAP
19 Temmuz 2014, CUMARTESİ


Tamam, çözüldü:) Açısal UI Router bu yeni yöntem, $urlRouterProvider.()deferİntercept https://github.com/angular-ui/ui-router/issues/64

temelde bu aşağı gelir:

angular.module('myApp', [ui.router])
  .config(['$urlRouterProvider', function ($urlRouterProvider) {
    $urlRouterProvider.deferIntercept();
  }])
  // then define the interception
  .run(['$rootScope', '$urlRouter', '$location', '$state', function ($rootScope, $urlRouter, $location, $state) {
    $rootScope.$on('$locationChangeSuccess', function(e, newUrl, oldUrl) {
      // Prevent $urlRouter's default handler from firing
      e.preventDefault();

      /** 
       * provide conditions on when to 
       * sync change in $location.path() with state reload.
       * I use $location and $state as examples, but
       * You can do any logic
       * before syncing OR stop syncing all together.
       */

      if ($state.current.name !== 'main.exampleState' || newUrl === 'http://some.url' || oldUrl !=='https://another.url') {
        // your stuff
        $urlRouter.sync();
      } else {
        // don't sync
      }
    });
    // Configures $urlRouter's listener *after* your custom listener
    $urlRouter.listen();
  }]);

Bu yöntem, şu anda dahil değildir sanırımustaaçısal uı sürümü yönlendirici, isteğe bağlı parametreler ile bir çok güzel, btw). Ve kaynak klonlanmış inşa edilmesi gerekiyor

grunt build

Doktorlar kaynağı olarak, üzerinden erişilebilir

grunt ngdocs

(/site Dizini içine inşa edilmiş olsun) // README daha fazla bilgi.MD

Bu, dinamik parametrelerin yapmak için başka bir yol var gibi görünüyorkullanmadım. Birçok nateabele için kredi.


Bir not olarak, buradaisteğe bağlı parametrelerAçısal UI Yönlendirici $yukarıdaki ile birlikte kullanılan stateProvider,:

angular.module('myApp').config(['$stateProvider', function ($stateProvider) {    

  $stateProvider
    .state('main.doorsList', {
      url: 'doors',
      controller: DoorsListCtrl,
      resolve: DoorsListCtrl.resolve,
      templateUrl: '/modules/doors/doors-list.html'
    })
    .state('main.doorsSingle', {
      url: 'doors/:doorsSingle/:doorsDetail',
      params: {
        // as of today, it was unclear how to define a required parameter (more below)
        doorsSingle: {value: null},
        doorsDetail: {value: null}
      },
      controller: DoorsSingleCtrl,
      resolve: DoorsSingleCtrl.resolve,
      templateUrl: '/modules/doors/doors-single.html'
    });

}]);

bu ne olursa parametreler biri eksikse bile bir durumu çözmek için olanak sağlar. SEO tek bir amacı vardır, okunabilirlik başka.

Yukarıdaki örnekte, doorsSingle gerekli bir parametre olmak istedim. Bu nasıl tanımlanacağı açık değildir. Birden fazla isteğe bağlı parametreleri olsa da, gerçekten bir sorun değil, çok iyi çalışıyor. Burada tartışma https://github.com/angular-ui/ui-router/pull/1032#issuecomment-49196090

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • apenney888

    apenney888

    27 EKİM 2010
  • Ludique

    Ludique

    21 NİSAN 2009
  • The CGBros

    The CGBros

    20 AĞUSTOS 2011