2017-04-17 37 views
-1

我的應用程序中有一個mdDialog,它可以調用API來響應某些數據。我需要在主控制器中可訪問此數據響應,以便可以在另一個呼叫中使用它。如何將響應數據從mdDialog中的http.get()傳遞給主控制器?

CRUD操作

$scope.add_id = []; 
    $scope.createAddress = function() { 
     $http.get('api.php?action=create-address', { 
      params: { 
       add1: $scope.newadd.add1, 
       add2: $scope.newadd.address2, 
       city: $scope.newadd.city, 
       state: $scope.newadd.state, 
       zip: $scope.newadd.zip 
      } 
     }) 
     .success(function(response) { 
      $scope.add_id = response.data[0].address_id; 
     }); 
    }; 

mdDialog

$scope.addParcel = function(ev) { 
    $mdDialog.show({ 
     controller: DialogController, 
     templateUrl: 'libs/html/addparcel.html', 
     parent: angular.element(document.body), 
     targetEvent: ev, 
     clickOutsideToClose:true,   
     scope: $scope, 
     preserveScope: true    
    }); 
}; 

所以addParcel mdDialog裏面我有一個按鈕,執行addAddress功能和原來成功的,我可以在對話框中訪問數據。但是,即使對話框設置爲保留範圍,關閉對話框後,address_id在主控制器中完全不會顯示。我應該用當地人嗎?我怎樣才能讓數據在主控制器中可訪問?請儘可能提供信息,因爲我仍然是AngularJS的新手。謝謝。

+1

下手,[唐't use'.success'](http://stackoverflow.com/questions/35329384/why-are-angular-http-success-error-methods-deprecated-removed-from-v1-6)。 – Claies

回答

0

這是因爲mdDialog創建了一個新的子範圍,它繼承自您的頁面控制器的$範圍。

你可以做幾件事情,

  1. 在你的頁面控制器在addAddress功能

    //頁面控制器 $創建一個對象,叫「addressDetails」,並訪問scope.addressDetails = {};

    // addAddress $ http.get(...),那麼(功能(響應){$ = scope.addressDetails.add_id response.data [0] .address_id; })。

  2. 使用$範圍。$父(不推薦)

您可以閱讀維基約範圍繼承(這是一個偉大的文章)

https://github.com/angular/angular.js/wiki/Understanding-Scopes

相關問題