在 ng-click 上从工厂方法调用模态 window

Call modal window from factory method on ng-click

我在 ng-click 操作上从工厂方法调用模态 window 时遇到问题。 我尝试了 2 种调用方式:

$scope.AddItem = function ($scope) {ModalWindowService.openAddItemDialog($scope)};

这样一来,点击就什么都没有了。但如果我检查 alert() 它有效。

$scope.AddItem = function () {alert('here');};

如果我这样做:

$scope.AddItem = ModalWindowService.openAddItemDialog($scope);

那么,我该如何解决问题?

这是示例代码:

主控:

    app.controller('MainController', ['$scope', 'ModalWindowService',  function($scope, ModalWindowService){
        //$scope.AddItem = ModalWindowService.openAddItemDialog($scope);
        $scope.AddItem = function ($scope) {ModalWindowService.openAddItemDialog($scope)};
    }]);

ModalWindowService:

app.factory('ModalWindowService',['$modal',function($modal) {
    function openAddItemDialog($scope) {

        $scope.animationsEnabled = true;
        $scope.valueToPass = "I must be passed";

        var modalInstance = $modal.open({
            animation: $scope.animationsEnabled,
            templateUrl: '/view/AddItemDialog.html',
            controller: 'AddItemController',
            resolve: {
                aValue: function () {
                    return $scope.valueToPass;
                }
            }
        });
        modalInstance.result.then(function (paramFromDialog) {
            $scope.paramFromDialog = paramFromDialog;
        });
    }

    return {
        openAddItemDialog: openAddItemDialog
    };
}]);

AddItemController:

app.controller('AddItemController',function($scope, $modalInstance, aValue) {
    $scope.valuePassed = aValue;
    $scope.close = function () {
        $modalInstance.close("Someone Closed Me");
    };
});

HTML 从那里应该打开模式 window:

            <button type="button" class="btn btn-orange btn-block" ng-click="AddItem()">
                Add
            </button>

在您的控制器中,不要将 $scope 传递给 $scope.AddItem 函数。

$scope.AddItem = function () {
    ModalWindowService.openAddItemDialog($scope)};
}]);