【发布时间】:2018-04-18 15:16:11
【问题描述】:
我有一个带有 form 的 Bootstrap 模式,在 div 中设置了 ng-class:
<div id="modalNewOrder" class="modal fade" data-modalName="order" role="dialog" ng-controller="NewOrderController as NewOrderCtrl">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close pull-left" data-dismiss="modal">X</button>
<h4 class="modal-title">
New order
</h4>
</div>
<div class="modal-body">
<div ng-class="NewOrderCtrl.position">
<form>
// input text here
</form>
加载模态时,其 NewOrder.position 将其 css 设置为居中。表单处理完毕后,NewOrder.position 更新为 top,其结果如下所示。
现在的问题是:我希望 NewOrder.position 在重新打开模式时重置为居中。但是,即使我重置 NewOrder.position,似乎 ng-class 也没有更新。我该怎么做?
我在我的控制器上使用它,但它无法更新 ng-class:
$("#modalNewOrder").on("hidden.bs.modal", function () {
$(this).find('form')[0].reset();
self.clearQuery();
self.position = "mycss-position-center";
});
***** 更新 *****
按照 Naren 的建议并进行了一些试验,我更新了我的代码。在我的 html 中,我有:
<div ng-class="{'mycss-position-top' : NewOrderCtrl.top, 'mycss-position-center' : !NewOrderCtrl.top}">
和
<form ng-submit="processing()">
在我的控制器中,我有:
var self = this;
self.top = false;
$("#modalNewOrder").on('shown.bs.modal', function() {
self.top = false;
});
$("#modalNewOrder").on("hidden.bs.modal", function () {
self.top = false;
});
self.processing = function(){
self.top = true;
};
现在的问题是,在第一次重新打开modal时,self.top被评估为“true”,即使“on show”功能被处理并在console.log中显示“false”。只有当我再次关闭模式并再次重新打开它时,它才会出错。
* 更新 *
建议的解决方案有效。我在另一个地方发现了导致最后一个错误行为的语法错误。
【问题讨论】:
标签: angularjs twitter-bootstrap bootstrap-modal