AngularJS Bootstrap模态结果没有关闭

时间:2015-01-23 14:48:09

标签: javascript angularjs twitter-bootstrap modal-dialog

我正在尝试将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');
    };
});

1 个答案:

答案 0 :(得分:0)

最好的方法是使用服务。无论如何,你应该把逻辑投入使用而不是控制器。

一般来说,控制器是你用范围连接东西的地方。

除此之外应该去工厂/服务。