Ich habe ein Problem beim Umleiten einer Seite auf eine andere
Ich habe Code in Controller verwendet

 $window.location.href = '/test';
 $location.path( "/test");

Aber wenn ich es benutzt habe, wird es auf der Homepage umgeleitet

 .state('test', {
    url: '/tests/:testId',
    templateUrl: TEMPLATE_URL + 'tests/test.html',
    controller: "testController",
    resolve: {
      testId: ['$stateParams', function ($stateParams) {
          return $stateParams.testId;
        }]
    },
    data: {
      title: "Test"
    }
  });

Ich möchte auf die obige Seite umleiten. Ich habe eine Funktion in Controller erstellt und rufe beim Klicken der Tabellenzeile auf. aber wenn ich auf Zeile klicke, wird diese Weiterleitung zu meiner Homepage.

0
Vipin Jain 30 Dez. 2015 im 14:19

3 Antworten

Beste Antwort

Es gibt nur einen Status namens test mit der URL /test/:testId. Da Sie offensichtlich UI-Router verwenden, der mit Status arbeitet, führen Sie den folgenden Code aus sollte den Trick machen:

$state.go('test', {'testId': 123});

Vergessen Sie nicht, dafür $state in Ihren Controller zu injizieren.

Wenn Sie die Art der "fest codierten" URL-Weiterleitung verwenden möchten ($location.path und $window.location.href sind direkte URL-Weiterleitungen), sieht der Code folgendermaßen aus:

$window.location.href = '/test/123';
$location.path( "/test/123");

Sie haben die Parameter in Ihrem Beispiel vergessen.

1
Hecke29 30 Dez. 2015 im 12:08

In Ihrem Fall müssen Sie verwenden:

$state.go('test', { testId : 'yourTestId' }, {reload: true});

Oder

$state.go('test'); //For a route without params 

Sicher müssen Sie $ state in Ihren Controller einfügen.

Wenn Sie verwenden möchten

$window.location.href = '/plan';
$location.path( "/plan");

Sie müssen Ihren Webserver so konfigurieren, dass dies akzeptiert wird:

Beispiel mit Nginx:

location / {
               ##try_files $uri$args $uri$args/ $uri/ /index.html$args =404;
               try_files $uri $uri/  /index.html =404;
       }
1
Mohammed Belmehdi 30 Dez. 2015 im 11:37

In Ihrem Fall sollten Sie $state.go() verwenden

$state.go('test', {'testId': 123});

Klicken Sie hier, um weitere Informationen zu erhalten http : //angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state

0
Pallavi 18 Jän. 2016 im 13:08