【发布时间】:2015-03-07 07:39:59
【问题描述】:
我正在使用 Angular-ui 弹出一个带有表单的模式。我的代码是:
app.controller('NewCaseModalCtrl', ['$http', '$scope','$modal', function ($http, $scope, $modal, $log) {
$scope.items = ['item1', 'item2', 'item3'];
$scope.open = function (size) {
var modalInstance = $modal.open({
templateUrl: 'modal-new-case.html',
controller: 'ModalInstanceCtrl',
size: size,
resolve: {
items: function () {
return $scope.items;
}
}
});
modalInstance.result.then(function (selectedItem) {
$scope.selected = selectedItem;
}, function () {
});
};
}]);
然后我在 modal-new-case.html 模板中有另一个控制器,我希望它运行一个 httpd 请求然后关闭该模态,代码如下:
app.controller('CreateCaseFormCtrl', ['$http','$scope', function($http,$scope) {
$scope.formData = {};
$scope.processForm = function() {
$http.post('http://api.com/proj', $scope.formData).
success(function(data, status, headers, config) {
console.log("success " + data.id);
}).
error(function(data, status, headers, config) {
console.log("Error " + status + data);
});
};
}]);
好的,在我的 modal-new-case.html 模板中,当我这样做时加载:
ng-controller="NewCaseModalCtrl"
我有这个 HTML:
<div ng-controller="CreateCaseFormCtrl">
<form ng-submit="processForm()">
<button class="btn btn-primary" ng-click="processForm()" >OK</button>
<button class="btn" ng-click="cancel()">Cancel</button>
</form>
</div>
因此,如果您看到,我真正想做的是运行该 processForm() 函数,当它成功返回时,我想然后调用将关闭模态的函数,我相信“取消( )”就好了。
但我不知道如何从 CreateCaseFormCtrl 控制器中引用它。
感谢任何想法和帮助,我想补充一点,我对 Angular 非常不成熟,所以如果这很复杂,请记住,也许我不是 100% 清楚 Angular 中的每一件事比如工厂之类的。我想我是说我对一个相当简单的肮脏解决方案感到非常满意,因为这不会是长期的生产编程代码。
【问题讨论】:
-
您的 html
modal-new-case.html是否以<div ng-controller="CreateCaseFormCtrl">开头?如果是这样,为什么不将模态控制器提供为CreateCaseFormCtrl并注入$modalInstance并使用其close(data)方法。
标签: javascript angularjs angular-ui angular-ui-bootstrap