pet*_*rmk 17 javascript modal-dialog twitter-bootstrap angularjs angular-ui-bootstrap
我对AngularJS很新,并且在从模态对话服务返回数据时遇到问题.基本上,我复制了Dan Wahlin的服务http://weblogs.asp.net/dwahlin/archive/2013/09/18/building-an-angularjs-modal-service.aspx,并从我的控制器调用它.
myApp.controller('MyController', function($scope, ModalService) {
window.scope = $scope;
$scope.mydata = {name: ""};
$scope.showModal = function () {
var modalOptions = {
closeButtonText: 'Cancel',
actionButtonText: 'Save',
headerText: 'Save Dialog'
}
ModalService.showModal({}, modalOptions).then(function (result) {
});
}
});
Run Code Online (Sandbox Code Playgroud)
然后我就像这样:
<div class="modal-header">
<h3>{{modalOptions.headerText}}</h3>
</div>
<form ng-submit="modalOptions.submit()">
<div class="modal-body">
<label>Name</label>
<input type="text" data-ng-model="mydata.name">
</div>
<div class="modal-footer">
<button type="button" class="btn" data-ng-click="modalOptions.close()">{{modalOptions.closeButtonText}}</button>
<button type="submit" class="btn btn-primary">{{modalOptions.actionButtonText}}</button>
</div>
Run Code Online (Sandbox Code Playgroud)
这个模态被调用如下:
<button class="btn btn-primary hidden pull-right" id="save" data-ng-click="showModal()">Save</button>
Run Code Online (Sandbox Code Playgroud)
所以我的问题是如何将名称字段的值返回给控制器?我已经浏览了整个网络,并且所有示例都具有在控制器中打开模态驻留的功能,这使得它更容易,因为控制器中的$ scope也存在于打开模态的函数中.
我尝试将以下代码添加到服务中的"show"函数,但它不起作用.
tempModalDefaults.resolve = function($scope) {
mydata = function () {
return $scope.mydata;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
PS我在我的代码中将modalService重命名为ModalService,所以这不是拼写错误.模态打开和关闭应该是,我只是无法将字段的值传递回控制器.
Kha*_* TO 38
在按钮中添加 data-ng-click="modalOptions.ok(mydata)"
<button type="submit" class="btn btn-primary" data-ng-click="modalOptions.ok(mydata)">{{modalOptions.actionButtonText}}</button>
Run Code Online (Sandbox Code Playgroud)
你可以从以下方面得到它:
ModalService.showModal({}, modalOptions).then(function (result) {
console.log(result.name);
});
Run Code Online (Sandbox Code Playgroud)
如果要使用modalOptions.submit函数,则需要稍微更改一下代码
在HTML中,传递给mydatato modalOptions.submit函数:
<form ng-submit="modalOptions.submit(mydata)">
Run Code Online (Sandbox Code Playgroud)
您的模型服务,替换show功能:
return $modal.open(tempModalDefaults); //remove the .result
Run Code Online (Sandbox Code Playgroud)
你的控制器:
$scope.showModal = function () {
var modalOptions = {
closeButtonText: 'Cancel',
actionButtonText: 'Save',
headerText: 'Save Dialog',
submit:function(result){
$modalInstance.close(result);
}
}
var $modalInstance = ModalService.showModal({}, modalOptions);
$modalInstance.result.then(function (result) {
console.log(result.name);
});
}
Run Code Online (Sandbox Code Playgroud)