Twitter bootstrap 角度ui引导模式:从ajax更新模型后消失
我正在使用AngularUI引导(ui.boostrap.modal)处理模板。数据{{property}}是根据Ajax请求创建的Twitter bootstrap 角度ui引导模式:从ajax更新模型后消失,twitter-bootstrap,angularjs,modal-dialog,angular-ui,Twitter Bootstrap,Angularjs,Modal Dialog,Angular Ui,我正在使用AngularUI引导(ui.boostrap.modal)处理模板。数据{{property}}是根据Ajax请求创建的 <!-- template for the modal box--> <div><a data-toggle="modal" href="#{{property.domId()}}" class="btn btn-default">{{property.label}}</a></
<!-- template for the modal box-->
<div><a data-toggle="modal" href="#{{property.domId()}}"
class="btn btn-default">{{property.label}}</a></div>
<div id="{{property.domId()}}"
class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<div class="row">
<div class="col-md-12 panel panel-info">
<div class="panel-heading">
<span tooltip-placement="bottom"
tooltip-html-unsafe="{{property.tooltip}}">
{{property.label}}</span>
</div>
<div class="panel-body">
<div ng-repeat="property in property.value">
<div ng-include="property.templateUrl">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
{{property.label}
接近
模态窗口中的一些按钮更新$scope中的模型,依此类推
问题是:从ajax承诺返回后,DOM开始重建模式框。
在某个时刻,在$digest的深处,它无法呈现元素,模态窗口消失。
它只留下背景阴影(阻止我点击任何东西)
在开发人员工具中,您可以看到整个DOM已完全由Angular解决。我将回答我自己的问题,因为它稍后会有所帮助。实际上,这不是ui引导使用Bootstrap3CSS的方式。 HTML代码与AngularJS一起工作,因为我仍在使用bootstrap.js XD。模式由Bootstrap3显示。。。 下面是如何在相同的用例中实现的 JS代码:创建一个open()函数来启动Modal。应提供模板和控制器。由于我的特定用例,我将$scope作为作用域传递(在不了解作用域的情况下不要照样复制此代码) 第二个控制器ModalInstanceController是模态框“内部”的控制器。您应该注入作用域和创建的模式
testModule.controller('ModalInstanceController',
['$scope', '$modalInstance', function ($scope, $modalInstance) {
$scope.close = function () {
$modalInstance.close('close');
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
在部分中,您可以使用text/ng template
创建内联模板。模态在这个脚本的“内部”。
最后一个按钮是使用主控制器中的open()打开模式。在标准BS3中,您有一个针对模式id
的按钮。这里需要调用open()方法。这是您必须在HTML中执行的主要解决方法
<div>
<script type="text/ng-template" id="modalContent.html">
<div class="modal-header">{{property.label}}
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-12 panel panel-info">
<div class="panel-heading">
<span tooltip-placement="bottom"
tooltip-html-unsafe="{{property.tooltip}}">
{{property.label}}</span>
</div>
<div class="panel-body">
<div ng-repeat="property in property.value">
<div ng-include="property.templateUrl">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-primary" ng-click="close()">OK</button>
<button class="btn btn-warning" ng-click="cancel()">Cancel</button>
</div>
</script>
<button class="btn btn-default" ng-click="open()">Open</button>
</div>
{{property.label}
{{property.label}
好啊
取消
打开
如果没有实时复制场景,很难回答您的问题,最好是使用。我觉得奇怪的是,你在temaplete中提供的内容太多了——你应该只提供内容。也不清楚您使用的是BS2.3还是BS3。在任何情况下,实时复制场景都会解决这个问题。我使用BS3时知道它不完全兼容。我意识到你是负责ui.bootstrap分支的人!我很久以前下载了一个定制的0.5.0版本,所以这可能就是问题所在。
testModule.controller('ModalInstanceController',
['$scope', '$modalInstance', function ($scope, $modalInstance) {
$scope.close = function () {
$modalInstance.close('close');
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
<div>
<script type="text/ng-template" id="modalContent.html">
<div class="modal-header">{{property.label}}
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-12 panel panel-info">
<div class="panel-heading">
<span tooltip-placement="bottom"
tooltip-html-unsafe="{{property.tooltip}}">
{{property.label}}</span>
</div>
<div class="panel-body">
<div ng-repeat="property in property.value">
<div ng-include="property.templateUrl">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-primary" ng-click="close()">OK</button>
<button class="btn btn-warning" ng-click="cancel()">Cancel</button>
</div>
</script>
<button class="btn btn-default" ng-click="open()">Open</button>
</div>