2017-04-17 4 views
-1

私はいくつかのデータで応答するAPIを呼び出すアプリケーションの内部にmdDialogを持っています。このデータレスポンスは、別のコールで使用できるように、メインコントローラでアクセス可能である必要があります。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

は、[、とドンを開始します'使用する '.success'](http://stackoverflow.com/questions/35329384/why-are-angular-http-success-error-methods-deprecated-removed-from-v1-6)。 – Claies

答えて

0

これは、mdDialogがページコントローラの$ scopeを継承する新しい子スコープを作成するためです。

あなたは物事のカップルを行うことができ、

  1. あなたaddAddress機能

    //ページコントローラ $で、あなたのページのコントローラにその「addressDetails」と呼ばれるもの、およびアクセスを、オブジェクトを作成しますscope.addressDetails = {};

    // addAddress $ http.get(...)は(関数(応答){ $ scope.addressDetails.add_id = response.data [0] .address_id; })。

  2. 使用$スコープ。あなたはスコープの継承については、このWikiを読むことができます

(推奨されません)$の親は(それはだ素晴らしい記事)

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

関連する問題