【发布时间】:2016-07-22 06:42:30
【问题描述】:
我将 AngularJS 与 ui.bootstrap 一起使用,并且有一个模态指令,效果很好。
myApp.directive("modalButton", ['$uibModal', function ($uibModal) {
return {
restrict: "A",
scope: {
modalUrl: '@',
modalModel: '='
},
link: function (scope, element, attrs) {
element.bind('click', function () {
var modalInstance = $uibModal.open({
templateUrl: scope.modalUrl, // Here I want to use an url instead.
controller: 'editDeliveryCtrl as ctrl',
resolve: {
model: function () {
return scope.modalModel;
}
}
});
});
}
};
}]);
并像这样使用:
<button type="button" class="btn btn-xs btn-default" modal-model="ctrl.currentDelivery" modal-button modal-url="@Url.Action("AddDelivery", "ProvisionContract", new {provisionContractId = Model.Id})">
<span class="fa fa-plus" area-hidden="true"></span>
</button>
当用户点击带有指令的按钮时,会显示一个模式。但是,我使用的是 MVC.Net,并且我正在加载的模式通常是带有 @Html.AntiForgeryToken() 或其他代码隐藏逻辑的表单。所以我真正想要的是每次都重新加载模板(向服务器发出新请求)。
我已经阅读了下面的问题,这可能是一个很好的答案,但我真正想要的是根本不使用模板。我希望 $uibModal 将其加载为全新的 HTML。
How to remove angular $modal cache?
我可以让$uibModal 每次都将模板重新加载为全新的 HTML 吗?更像 jQuery 中的 $.load?
【问题讨论】:
-
全新的 HTML 是什么意思?请求之间同一个URL下的html是否会发生变化?
-
是的,HTML 是由服务器渲染的,我想在每次打开模式时获取它。
-
如何使用
resolve获取您的模板并将其显示在模态框上?
标签: angularjs asp.net-mvc angular-ui-bootstrap