0

Ich habe folgende Auswahlliste in ControllerASelect ist nicht verbindlich auf einen Wert, wenn die Rückkehr von einem Zustand

<select ng-model="selecteditem" ng-change="selectedItem(selecteditem)" ng-options="item.id as item.name for item in items" ></select> 

und ich habe zwei Methoden, Add() und Update() in ControllerB und sie sind fast gleich

$scope.add = function (g) { 
    if (g != '') { 
     . 
     . 
     . 
     . 
     $scope.grade = {}; 
     $state.go('grades', { selecteditem: g, items: $scope.items }, false); 
    } 
} 

in ControllerA

$scope.$on('$ionicView.beforeEnter', function (viewData) { 
     if ($stateParams.items != null && $stateParams.items.length > 0) { 
      $scope.items = $stateParams.items; 
      $scope.selecteditem= $stateParams.selecteditem; 
      .... 
     } 
     else { 
      ...... 
     } 
    }); 

in der Add() Funktion funktioniert alles gut, aber in der Update() Funktion, wenn ich zurück gehe zu ControllerA, wählen Sie ist nicht bindend an selecteditem und zeigt einen leeren Wert beim Start. Was ist das Problem?

+0

versuchen, Speichern Sie $ scope.selecteditem in $ rootScope.selecteitem und Sie können auf den Wert rootScope.selecteitem in einem anderen Controller zugreifen. Da der Wert der Scope-Variablen in einem bestimmten Controller verfügbar ist. –

Antwort

0

Es gibt einige Optionen. Wie hängen diese Controller zusammen?

  1. Sie können jederzeit Zugriff Eltern Steuerungsbereich von $ parent:

    $scope.$parent.selectedItem = .....

  2. Sie $ rootScope verwenden können, die sich von jedem Controller

    $rootScope.selectedItem = .....

    Sie zugänglich ist, müssen injizieren $ rootScope in Ihren Controller

  3. Mit Service ist wahrscheinlich die beste Option:

    .service('myService', function() { this.selectedItem = null; });

Sie Ihren Dienst in Controller injizieren und dann setzen/Zugang erforderlichen Variablen wie:

myService.selectedItem = ..........

Verwandte Themen