AngularJs:
我试图显示编辑模式框。为此,我使用了AngularJs材料设计的$ mdDialog。这是我的代码:
angular.module('main').controller('UserCtrl', ['$scope', function($scope){
function loadUser(){
...
}
function showEditSale(index) {
var sale = $scope.user.Sales[index];
$mdDialog.show({
clickOutsideToClose: true,
fullscreen: $scope.customFullscreen,
parent: angular.element(document.body),
locals: {
sale: sale
},
templateUrl: 'front/templates/user/edit-sale.html',
controller: 'UserSaleCtrl'
})
.then(function(answer) {
}, function() {
});
}
}]);
angular.module('main').controller('UserSaleCtrl', ['$scope', function($scope, sale){
$scope.sale = sale;
function updateSale(){
...
**Need to reload user**
}
}]);
当我点击针对用户销售的编辑按钮时,我调用 showEditSale 传递user.Sales项的索引。将显示一个弹出窗口,我可以在那里编辑值。点击更新时,会调用api来更新销售信息。
问题是我想重新加载此用户。要重新加载,我必须从另一个控制器调用函数。
我的问题是:
有没有其他方法可以将数据传递到对话框而不是在控制器中注入?
我是否必须使用AngularJs的emit事件来调用另一个控制器的函数?
我可以以某种方式使用相同的控制器吗?我试过了,但我认为$ scope正在重置模态对话框。
答案 0 :(得分:1)
我在UserSaleCtrl中添加了以下代码:
function updateSale(){
...
$rootScope.$broadcast('reloadUser');
}
在UserCtrl中添加了以下代码:
$scope.$on('reloadUser', function(event) {
loadUser();
});