我正在打开可以随时最小化、带回、编辑并最终提交的对话框。我想要做的可能不仅仅是一个对话,但我希望它能够成功。
现在我有了它,这样我就可以召唤我的对话框,用现有数据预先填充它,编辑和提交。我现在的主要问题是我不知道如何将最终的、可能已编辑的数据发送到客户端中的另一个控制器。
$scope.$broadcast 或 $scope.$emit 似乎不起作用..注入的控制器以某种方式驻留在其他控制器之外?
这就是我创建对话框的方式:
$scope.openDialog = function(index){
var html = $scope.buildHTML(index);
var opts = {
resizeable: true,
backdrop: false,
handle: ".modal-header",
template: html,
controller: 'OpenItemCtrl',
resolve: {
itemModel: function() {
return $scope.item[index];
}
}
};
var d = $dialog.dialog(opts);
d.open().then(function() {
// Right here I can determine that a dialog has closed.
alert(index);
});
};
这是我的控制器:
function OpenItemCtrl($scope, dialog, itemModel) {
$scope.item= {};
for(key in itemModel) {
$scope.item[key] = itemModel[key];
}
$scope.close = function(qty, src, price){
// I need to get these edited variables back
// into my controller classes somehow...
$scope.$emit("ItemFinalized", {msg:$scope.item});
$scope.$broadcast("ItemFinalized", {msg:$scope.item});
dialog.close();
};
}
如何将最终数据返回到控制器层次结构中,以便可以根据需要传递它们?