如何将响应数据从mdDialog中的http.get()传递到主控制器?

时间:2017-04-17 15:10:59

标签: angularjs angular-material mddialog

我的应用程序中有一个mdDialog,它调用一个API来响应一些数据。我需要在主控制器中访问此数据响应,以便可以在另一个调用中使用它。

CRUD操作

try:
    # ....
 except win32api.error:
    pass

mdDialog

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

所以在addParcel mdDialog里面我有一个执行addAddress函数的按钮,它成功了,我可以访问对话框中的数据。但是,即使将对话框设置为保留范围,在关闭对话框后,address_id也不会出现在主控制器中。我应该使用当地人吗?如何在主控制器中访问数据?请尽可能提供信息,因为我还是AngularJS的新手。感谢。

1 个答案:

答案 0 :(得分:0)

这是因为mdDialog创建了一个新的子作用域,它继承自页面控制器的$ scope。

你可以做几件事,

  1. 在页面控制器中创建一个对象,称为“addressDetails”,并在addAddress函数中访问该对象

    //页面控制器 $ scope.addressDetails = {};

    // addAddress $ http.get(...)。then(function(response){   $ scope.addressDetails.add_id = response.data [0] .address_id; });

  2. 使用$ scope。$ parent(不推荐)

  3. 你可以阅读这个关于范围继承的维基(这是一篇很棒的文章)

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