如何将MDDialog内部HTTP.Get()的响应数据传递到主控制器



我在应用程序内部有一个mddialog,可以调用API,并用一些数据响应。我需要此数据响应才能在主控制器中访问,以便可以在另一个调用中使用。

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内部的内部,我有一个按钮可以执行辅助功能,并且它会成功,我可以在对话框中访问数据。但是,即使对话框设置为保留范围,在我关闭对话框后,地址_ID根本没有出现在主控制器中。我应该使用当地人吗?如何在主控制器中获取可访问的数据?请尽可能多地提供信息,就像我对Angularjs的新手一样。谢谢。

这是因为mddialog创建了一个新的子范围,该范围从您的页面控制器的$ scope继承。

您可以做几件事,

  1. 在您的页面控制器中创建一个对象,称为" advellyDetails",并在您的辅助功能中访问该对象

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

    //辅助$ http.get(...(。然后(函数(响应({ $ scope.AddressDetails.add_id = revests.data [0] .address_id;}(;

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

您可以阅读有关范围继承的Wiki(这是一篇很棒的文章(

https://github.com/angular/angular.js/wiki/understanding-scopes

最新更新