我正在尝试将m-e-controy Angular-Dialog-Service实现到我的AngularJS应用程序中。我想创建一个“编辑”对话框来更改对象的值。该应用程序由FactorController
控制,该对话框会打开一个对话框,传递要编辑的因素并将FactorDialogController
绑定到该对象。
这很好用。我了解我可以通过拍摄FactorController
将数据返回$modalInstance.close(data)
。但这会关闭对话框。我如何只返回数据,保持对话框,在FactorController
中执行一些验证工作,当一切正常时,然后关闭对话框?见评论。
module.controller('FactorController', ['FactorREST', '$scope', 'dialogs', function($FactorREST, $scope, dialogs) {
...
this.editFactor = function(factor) {
var dlg = dialogs.create('/js/angularjs/template/custom/factor.html','FactorDialogController',factor, {size: 'md', copy:true});
dlg.result.then(function(data){
_this.connectionStatus = _this.STATUS_LOADING;
$FactorREST.put({id: factor.id}, data).$promise.then(function(response) {
_this.connectionStatus = _this.STATUS_DONE;
}).catch(function() {
_this.connectionStatus = _this.STATUS_DONE;
connectionErrorDialog();
});
});
};
)
.controller('FactorDialogController',function($scope,$modalInstance,data){
$scope.tmpFactor = data;
/* Callbacks**************************************************
*************************************************************/
$scope.save = function() {
$modalInstance.close($scope.tmpFactor);
// don't close, but something linke $modalInstance.return($scope.tmpFactor)
};
$scope.abort = function() {
$modalInstance.dismiss('Abgebrochen');
};
});
答案 0 :(得分:0)
最好的方法是使用服务。无论如何,你应该把逻辑投入使用而不是控制器。
一般来说,控制器是你用范围连接东西的地方。
除此之外应该去工厂/服务。