gpt4 book ai didi

javascript - 从 angularjs 模态对话框服务返回数据

转载 作者:行者123 更新时间:2023-12-02 22:41:15 24 4
gpt4 key购买 nike

我对 AngularJS 相当陌生,并且在从模式对话框服务返回数据时遇到问题。基本上,我复制了 Dan Wahlin 的服务 http://weblogs.asp.net/dwahlin/archive/2013/09/18/building-an-angularjs-modal-service.aspx并从我的 Controller 调用它。

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) {

});
}

});

然后我的部分像这样:

<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>

该模式的调用方式如下:

<button class="btn btn-primary hidden pull-right" id="save" data-ng-click="showModal()">Save</button>

所以我的问题是如何将名称字段的值返回给 Controller ?我查遍了整个网络,所有示例都具有打开模态驻留在 Controller 内的函数,这使得它变得更容易,因为 Controller 中的 $scope 也存在于打开模态的函数中。

我尝试将以下代码添加到服务中的“show”函数中,但没有成功。

    tempModalDefaults.resolve = function($scope) {
mydata = function () {
return $scope.mydata;
}
}

谢谢

附注我在代码中将 modalService 重命名为 ModalService,因此这不是拼写错误。模式按其应有的方式打开和关闭,我只是无法将字段的值传递回 Controller 。

最佳答案

在按钮中添加 data-ng-click="modalOptions.ok(mydata)"

<button type="submit" class="btn btn-primary" data-ng-click="modalOptions.ok(mydata)">{{modalOptions.actionButtonText}}</button>

您可以从以下位置获取它:

ModalService.showModal({}, modalOptions).then(function (result) {
console.log(result.name);
});

DEMO

如果您想使用modalOptions.submit函数,您需要稍微更改一下代码

在 HTML 中,将 mydata 传递给 modalOptions.submit 函数:

<form ng-submit="modalOptions.submit(mydata)">

您的模型服务,在 show 函数中替换:

return $modal.open(tempModalDefaults); //remove the .result

您的 Controller :

$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);
});
}

DEMO

关于javascript - 从 angularjs 模态对话框服务返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21034694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com