Javascript angularjs对话框表单数据未更新范围

Javascript angularjs对话框表单数据未更新范围,javascript,angularjs,angularjs-scope,angularjs-material,Javascript,Angularjs,Angularjs Scope,Angularjs Material,我正在创建一个小应用程序,在其中我打开一个棱角材质对话框来编辑客户地址信息。当前,对话框将打开并显示现有地址信息,编辑并提交对话框中的数据时,数据库将更新。但是,页面上的地址信息不会自行更新 数据库更新后,页面上的Add1和Add2应更新为新信息。我想不出怎么做请帮忙 我不想在用户键入地址时更新主页面,只在exec函数完成时更新主页面 HTML: 诀窍是您必须传入一个独立的范围,这样对话框的范围就不会绑定到父范围。为此,您必须使用参数local,并使用不同的控制器来处理逻辑 $mdDialog.

我正在创建一个小应用程序,在其中我打开一个棱角材质对话框来编辑客户地址信息。当前,对话框将打开并显示现有地址信息,编辑并提交对话框中的数据时,数据库将更新。但是,页面上的地址信息不会自行更新

数据库更新后,页面上的Add1和Add2应更新为新信息。我想不出怎么做请帮忙

我不想在用户键入地址时更新主页面,只在exec函数完成时更新主页面

HTML:


诀窍是您必须传入一个独立的
范围
,这样对话框的范围就不会绑定到父范围。为此,您必须使用参数
local
,并使用不同的控制器来处理逻辑

$mdDialog.show({
   controller: 'DialogCtrl',
   templateUrl: 'tabDialog.tmpl.html',
   parent: angular.element(document.body),
   targetEvent: ev,
   clickOutsideToClose: true,
   locals: {
     address1: $scope.customerdetails.Add1,
     address2: $scope.customerdetails.Add2,
   }
})
然后,您将使用另一个控制器来处理对话框中需要的任何逻辑。在这里,您可以将
address1
address2
注入到控制器中,沿着这条线

.controller('DialogCtrl',function($scope,$mdDialog, address1, address2){
   console.log(address1, address2) //this will have the values as $scope.customerdetails.Add1 and 2
}
现在,您已经成功地将数据从
AppCtrl
传递到
对话框ctrl
,然后可以执行数据库转换。在此之后,您必须解决承诺,以便您的AppCtrl可以获得更新的数据

我用叉子叉了你的笔:


我没有你的服务,所以我模仿了一个
$timeout
来模仿承诺回报

谢谢,这很好!我可以用本地语言传递整个customerdetails对象吗?因为实际上有很多变量,而不仅仅是2个。thanks@Janey让我知道结果,如果它解决了你的问题(或者至少指向了正确的方向),请标记接受的答案
$mdDialog.show({
   controller: 'DialogCtrl',
   templateUrl: 'tabDialog.tmpl.html',
   parent: angular.element(document.body),
   targetEvent: ev,
   clickOutsideToClose: true,
   locals: {
     address1: $scope.customerdetails.Add1,
     address2: $scope.customerdetails.Add2,
   }
})
.controller('DialogCtrl',function($scope,$mdDialog, address1, address2){
   console.log(address1, address2) //this will have the values as $scope.customerdetails.Add1 and 2
}