SORU
3 EYLÜL 2014, ÇARŞAMBA


Nasıl parametreleri uı-sref kullanarak yönlendirici uı denetleyicisi geçmek

Ve uı-router ui-sref kullanarak geçiş yapmak istiyorum devlet için iki parametre almak istiyorum.

Aşağıdaki linki foo bar parametreleri ile home: devlet geçiş için kullanmak gibi bir şey

<a ui-sref="home({foo: 'fooVal', bar: 'barVal'})">Go to home state with foo and bar parameters </a>

foo bar denetleyici değerleri alma:

app.controller('SomeController', function($scope, $stateParam) {
  //..
  var foo = $stateParam.foo; //getting fooVal
  var bar = $stateParam.bar; //getting barVal
  //..
});     

Denetleyicisi $stateParam undefined.

Biri bana bunu halletmek için nasıl anlamanıza yardımcı olabilir?

Düzenleme:

.state('home', {
  url: '/',
  views: {
    '': {
      templateUrl: 'home.html',
      controller: 'MainRootCtrl'

    },

    'A@home': {
      templateUrl: 'a.html',
      controller: 'MainCtrl'
    },

    'B@home': {
      templateUrl: 'b.html',
      controller: 'SomeController'
    }
  }

});

CEVAP
3 EYLÜL 2014, ÇARŞAMBA


example nasıl göstermek için yarattım. Güncelleştirilmiş state tanım olur:

  $stateProvider
    .state('home', {
      url: '/:foo?bar',
      views: {
        '': {
          templateUrl: 'tpl.home.html',
          controller: 'MainRootCtrl'

        },
        ...
      }

Ve bu denetleyici olacaktır:

.controller('MainRootCtrl', function($scope, $state, $stateParams) {
    //..
    var foo = $stateParams.foo; //getting fooVal
    var bar = $stateParams.bar; //getting barVal
    //..
    $scope.state = $state.current
    $scope.params = $stateParams; 
})

Ne devlet artık eve url olarak tanımlanmış

url: '/:foo?bar',

demek ki, url parametreler olarak bekleniyor

/fooVal?bar=barValue

Bu iki bağlantılar doğru kumandaya argümanlar geçecek:

<a ui-sref="home({foo: 'fooVal1', bar: 'barVal1'})">
<a ui-sref="home({foo: 'fooVal2', bar: 'barVal2'})">

Ayrıca, denetleyici $stateParam yerine $stateParams tüketmek.

Doktor için Link:

here kontrol edebilirsiniz

params : {}

Orada da aynı şekildeyenidaha ayrıntılı ayarparams : {}. Zaten gördüğümüz gibi, bir parçası gibi parametreler ilan edebilirurl. Ama params : {} yapılandırma ile bu tanımı genişletmek veya url bir parçası olmayan parametreleri takdim edebiliriz:

.state('other', {
    url: '/other/:foo?bar',
    params: { 
        // here we define default value for foo
        // we also set squash to false, to force injecting
        // even the default value into url
        foo: {
          value: 'defaultValue',
          squash: false,
        },
        // this parameter is now array
        // we can pass more items, and expect them as []
        bar : { 
          array : true,
        },
        // this param is not part of url
        // it could be passed with $state.go or ui-sref 
        hiddenParam: 'YES',
      },
    ...

Ayarlar parametreler kullanılabilir. $stateProvider belgelerinde açıklanmıştır

Aşağıda sadece bir özü

  • değer - {nesne|işlev=}Bu parametre için varsayılan değer olarak belirtir. Bu örtülü olarak isteğe bağlı olarak bu parametre ayarlar...
  • - {boolean=} dizisi:(varsayılan: false) true, param değer değerler dizisi olarak kabul edilir.
  • squash - {=|string bool}:squash geçerli parametre değeri varsayılan değer ile aynı olduğunda, varsayılan parametre değeri URL olarak nasıl temsil yapılandırır.

Bu parametreler bu şekilde diyebiliriz:

// hidden param cannot be passed via url
<a href="#/other/fooVal?bar=1&bar=2">
// default foo is skipped
<a ui-sref="other({bar: [4,5]})">

Eylem here kontrol edin

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Breno Rises

    Breno Rises

    7 Ocak 2014
  • LatinNinja99

    LatinNinja99

    28 EKİM 2011
  • SoundHound

    SoundHound

    8 Mart 2006