我的应用程序中有一个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的新手。感谢。
答案 0 :(得分:0)
这是因为mdDialog创建了一个新的子作用域,它继承自页面控制器的$ scope。
你可以做几件事,
在页面控制器中创建一个对象,称为“addressDetails”,并在addAddress函数中访问该对象
//页面控制器 $ scope.addressDetails = {};
// addAddress $ http.get(...)。then(function(response){ $ scope.addressDetails.add_id = response.data [0] .address_id; });
使用$ scope。$ parent(不推荐)
你可以阅读这个关于范围继承的维基(这是一篇很棒的文章)
https://github.com/angular/angular.js/wiki/Understanding-Scopes