我在应用程序内部有一个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继承。
您可以做几件事,
-
在您的页面控制器中创建一个对象,称为" advellyDetails",并在您的辅助功能中访问该对象
//页面控制器$ scope.addressdetails = {};
//辅助$ http.get(...(。然后(函数(响应({ $ scope.AddressDetails.add_id = revests.data [0] .address_id;}(;
-
使用$ scope。$ parent(不推荐(
您可以阅读有关范围继承的Wiki(这是一篇很棒的文章(
https://github.com/angular/angular.js/wiki/understanding-scopes