2016-06-01 17 views
1

Ich habe versucht, angular js $ state.go() mit Parameter zu implementieren. Aber das $ state.go() funktioniert gut ohne Parameter. Aber mit Parameter hat es nicht funktioniert. Ich habe schon viele Beispiele ausprobiert, aber auf keinen Fall. Ich muss den Parameter in der HTML-Ansicht anzeigen. mein Zustand Anbieter ist,

$stateProvider 
    .state('home', { 
     url: '/', 
     views: { 
      '[email protected]': { 
      templateUrl: 'content.html', 
      controller: 'dashCtrl' 
      } 
     }, 
    params: { 
     obj: { 
      value:'' 
     } 
    } 
     }); 

und Controller ist,

 dashboard.controller('dashCtrl', function ($scope, $http, $state, $stateParams){ 
       $state.go('dash_home', {obj: {value:'admin'}}); 
}); 

und meine div ist

<div> 
    <h1>welcome : {{value}} || {{obj.value}}</div> 

, was ist das Problem.?

+0

Sie zeigen den "Heim" -Zustand und versuchen zu 'dash_home' zu ​​gehen, was ein völlig anderer Zustand ist, nicht einmal ein Kindzustand von' home' –

+0

Zuhause ist mein aktueller Zustand und das_home ist der Zustand, den ich will Umleiten – jicks

Antwort

1

ich meine Fehler gefunden. Der richtige Code ist,

$stateProvider 
    .state('home', { 
     url: '/', 
     views: { 
      '[email protected]': { 
      templateUrl: 'content.html', 
      controller: 'dashCtrl' 
      } 
     }, 
    params: { 
      value:'' 
    } 
     }); 

Controller ist,

dashboard.controller('mycontroller',function($scope, $http, $state, $stateParams){ 

    $scope.user=$state.params.registerData; 

    $scope.redirect=function() 
    { 
     $state.params.registerData='mycontent'; 

     $state.go('dash_home', {registerData:$state.params.registerData}); 
    } 

}); 

bedankt sich bei allen.

2

Sie können Parameter nicht direkt im HTML verwenden. Sie müssen es zuerst dem Bereich hinzufügen (oder einem virtuellen Modell, wenn Sie diesen verwenden), z.

$scope.obj = $state.current.params.obj 

Und Sie haben es in der Steuerung des Staates zu tun, die Sie natürlich gehen, nicht in denen, wo Sie anrufen $ state.go

+0

würden Sie mir bitte ein Beispiel geben.? – jicks

+0

Ich bin mir nicht sicher, was du meinst. Sie leiten den Status 'dash_home' um. Wenn dieser Status also einen Controller hat, müssen Sie nur das Beispiel aus meiner Antwort verwenden, um die Statusparameter dem Bereich zuzuordnen. Das Problem ist, dass es angular die Daten nicht rendern kann, da es nichts darüber weiß. Sie müssen es sagen, indem Sie es dem Geltungsbereich hinzufügen. –

+0

Ich sehe nicht, dass Sie Ihre Funktion überhaupt aufrufen und außerdem verwendet Ihr state.go den Staat, der nicht existiert. Vielleicht hast du dort nur 'zuhause' gemeint? Andernfalls müssen Sie den richtigen Status hinzufügen. –

0

Ich denke, man keine Objekte verwenden können, in params. Ersetzen Sie einfach

params: { 
    obj: { 
     value:'' 
    } 
} 

dazu:

params: { 
     value:'' 
} 

und auch: $state.go('dash_home', {obj: {value:'admin'}});-$state.go('home', {value:'admin'});

+0

Ich habe das versucht, aber nicht funktioniert. – jicks

+0

Können Sie eine Geige bereitstellen? –

+0

Machst du Witze? Sie haben eine Geige mit Syntaxfehlern und ohne hinzugefügte Skripte zur Verfügung gestellt. Außerdem benutzt du '$ state.go ('dash_home')' aber wie ich und @Alon Eitan geschrieben haben: '$ state.go ('home')' –

Verwandte Themen