我想在“提交”按钮上创建确认对话框。所以我使用角度ui bootstrap。
这是我的主控制器代码:
FrontEnd.controller('PostViewController',function($scope,$stateParams,PostFactory, $modal){
$scope.openConfirm = function(size) {
var modalInstance = $modal.open({
animation: true,
templateUrl: 'ConfirmDialog.html',
controller: 'ConfirmDialogController',
size: size,
resolve: {
form: function () {
return $scope.form;
},
//tried with this line as well, but could not resolve error
PostFactory: "PostFactory"
}
});
modalInstance.result.then(function (response) {
$scope.isSurveySubmitted = true;
$scope.message = response.message;
//$scope.selected = selectedItem;
}, function () {
console.log('Modal dismissed at: ');
});
};
});
这是我的ConfirmDialogController:
FrontEnd.controller('ConfirmDialogController', function($scope, $http, $modalInstance, form, PostFactory){
$scope.ok = function () {
PostFactory.SubmitSurvey(form).success(function(response){
$modalInstance.close(response);
}).success(function(response){
$modalInstance.close(response);
});
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
});
模态正确打开,没有错误。当我点击取消按钮时,它关闭模式正如我所料。但是当我点击确定时,它会调用 $ scope.ok(),但会在控制台中抛出错误消息,PostFactory未定义。
那该怎么办?谢谢你的帮助。
答案 0 :(得分:2)
我认为您可以使用scope
$modalInstance.open()
字段
将工厂设置为新范围的属性
var scope = $scope.$new();
scope.factory = PostFactory;
$modalInstance.open({
// other stuff
scope: scope
});
然后在yoou modal的控制器中引用$ scope.factory。
不确定是否会弄乱其他任何东西,值得一试。