我在ng-click操作中从工厂方法调用模态窗口时遇到问题。 我试过两种方式来打电话:
$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:
<button type="button" class="btn btn-orange btn-block" ng-click="AddItem()">
Add
</button>
答案 0 :(得分:1)
在您的控制器中,请勿将$scope
传递给$scope.AddItem
功能。
$scope.AddItem = function () {
ModalWindowService.openAddItemDialog($scope)};
}]);