2016-08-02 9 views
0

Mein Code ist wie folgt:Staat params nicht mit ui-Router weitergegeben

$stateProvider 
     .state('results', { 
     url: '/results?a&b&c', 
     controller($stateParams, $state) { 
      'ngInject'; 

      console.log($stateParams); 
      console.log($state.params); 
     }, 
     template: '<div>Hello world</div>' 
    }); 

.. und wenn ich in localhost:8888/results?a=10&b=20c=30 geben, wird die Query-String aus der URL gestrippt. Und $state.go('results', {a:10, b:20, c:30} funktioniert auch nicht. Das Ändern der Parameter von Abfragezeichenfolgenparameter in URL-Parameter funktionierte ebenfalls nicht. Es gibt irgendwo einen dummen Käfer, den ich nicht hätte quetschen können!

Ich habe versucht, von Express zu ändern, für den Server zu verbinden, aber keine Änderung. Also, hat irgendjemand das erlebt und wie haben Sie es behoben?

Meine aktuellen Verbindungseinstellungen sind wie folgt:

const connect = require('gulp-connect'); 
const history = require('connect-history-api-fallback'); 

gulp.task('serve', function() { 
    connect.server({ 
     root: conf.dest, 
     port: conf.port, 
     middleware: function(connect, options) { 
      return [ history() ]; 
     } 
    }); 
}); 

Edit:

Als ich vor $state.go die Parameter console.log, die Informationen korrekt ist, wenn ich console.log$stateParams von der Steuerung von results, Ich bekomme { a: undefined, b: undefined, c: undefined }.

Edit2:

Ich habe versucht, dies auch ohne Erfolg.

$stateProvider 
    .state('results', { 
     url: '/results/:a/:b/:c', 
     controller($stateParams, $state) { 
      'ngInject'; 

      console.log($stateParams); 
      console.log($state.params); 
     }, 
     template: '<div>Hello world</div>' 
    }) 

Und in der von-State-Controller:

class OptionsController { 
    constructor($state) { 
     this.$state = $state; 
    } 

    // ... 

    submit() { 
     console.log(this.options()); // prints the correct info 
     this.$state.go('results', this.options()); 
    } 
} 

Update3:

habe ich einen anderen Zustand test. Dieser Zustand sieht wie folgt aus:

$stateProvider 
    .state('test', { 
     url: '/x/:y', 
     controller($stateParams) { 
      'ngInject'; 

      console.log(JSON.stringify($stateParams)); 
     } 
    }) 

Als ich eingeben http://localhost:8888/x/10, bin ich sofort zu http://localhost:8888/x/ umgeleitet. Das ist mehr als seltsam!

+0

Routers Config mit params hinzufügen – rbinsztock

+0

Meine andere Route Config ist '$ locationProvider.html5Mode (true);' und '$ urlRouterProvider.otherwise ('/');' – user3654410

Antwort

0
$stateProvider 
     .state('results', { 
     url: '/results?:a&:b&:c', 
     controller($stateParams, $state) { 
      'ngInject'; 

      console.log($stateParams); 
      console.log($state.params); 
     }, 
     template: '<div>Hello world</div>', 
     params : { 
     a : null, 
     b : null, 
     c : null 
     } 

    }); 

mehr etwas wie das.

+1

http://stackoverflow.com/ a/29796466/861206 – rbinsztock

+0

Das hat leider nicht funktioniert. : / – user3654410

0

Okay. Ich habe die Lösung gefunden. Es war wegen einer Richtlinie abfangen ui Router wie diese $scope.$on('$stateChangeStart', performAnimation); wegen einer Animation.

Später im Code habe ich $state.go(toState.name) verwendet und vergessen, die Parameter zurück zu addieren.

Dummer Bug, wie alle dummen Bugs sind! Also Punkt sein: Überprüfen Sie, ob Sie '$ stateChangeStart' irgendwo abfangen! :)