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