Ich benutze AngularJS mit ui.bootstrap
und haben eine modale Direktive, die gut funktioniert.
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;
}
}
});
});
}
};
}]);
und verwendet wie:
<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>
Wenn ein Benutzer klickt auf eine Schaltfläche mit der Richtlinie ein modal dargestellt ist. Jedoch verwende ich MVC.Net und die modals, die ich lade, ist häufig eine Form mit @Html.AntiForgeryToken()
oder anderer Code-behind Logik. Also, was ich wirklich will, ist die Vorlage jedes Mal neu zu laden (eine neue Anfrage an den Server).
Ich habe Frage unten gelesen und das kann eine gute Antwort sein, aber was ich wirklich will, ist überhaupt keine Vorlagen zu verwenden. Ich möchte $uibModal
, um es stattdessen als brandneuen HTML zu laden.
How to remove angular $modal cache?
Kann ich $uibModal
machen laden Sie die Vorlage als brandneue HTML jedes Mal? Mehr wie $.load
in jQuery?
Was meinst du mit * brandneuen HTML *? Ändert sich der HTML-Code unter der gleichen URL zwischen den Anfragen? – fracz
Ja, der HTML-Code wird vom Server gerendert und ich möchte ihn jedes Mal abrufen, wenn das Modal geöffnet wird. – smoksnes
Wie wäre es mit 'resolve', um Ihre Vorlage zu erhalten und auf dem Modal anzuzeigen? – svarog