0

我有以下選擇列表,我有兩種方法,Add()ControllerBUpdate()和他們幾乎相同選擇不<code>ControllerA</code></p> <pre><code><select ng-model="selecteditem" ng-change="selectedItem(selecteditem)" ng-options="item.id as item.name for item in items" ></select> </code></pre> <p>綁定到一個值時,從狀態回報

$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 { 
      ...... 
     } 
    }); 

Add()函數中,一切工作正常,但在Update()函數中,當我回到ControllerA時,select不與selecteditem綁定,並在開始時顯示一個空值。問題是什麼?

+0

嘗試將$ scope.selecteditem存儲在$ rootScope.selecteditem中,您將能夠訪問另一個Controller中的rootScope.selecteditem值。 因爲範圍變量值在特定控制器內可用。 –

回答

0

有幾個選項。 這些控制器如何相關?

  1. 您可以通過$父始終獲得父母的控制範圍:

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

  2. 您可以使用$ rootScope這是從每一個控制器

    $rootScope.selectedItem = .....

    你需要訪問將$ rootScope注入您的控制器

  3. 使用的服務可能是最好的選擇:

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

你可以注入你的服務到控制器中,然後設置/訪問所需的變量,如:

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

相關問題