通过ng-click

时间:2015-06-08 08:49:21

标签: javascript angularjs angular-services

我在ng-click操作中从工厂方法调用模态窗口时遇到问题。 我试过两种方式来打电话:

$scope.AddItem = function ($scope) {ModalWindowService.openAddItemDialog($scope)};
以这种方式,点击就没有任何反应。但是,如果我与alert()核对,那就可以了。

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

如果我这样做:

$scope.AddItem = ModalWindowService.openAddItemDialog($scope);
  • 模态窗口仅在页面加载时打开,而不是作为ng-click功能打开。

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

这是示例代码:

主要控制器:

    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:

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

1 个答案:

答案 0 :(得分:1)

在您的控制器中,请勿将$scope传递给$scope.AddItem功能。

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