Angular UI bootstrap uibModalInstance.Ergebnis nicht nachgeben beliebigen Wert
Unten ist mein code für die Richtlinie cabinet
und meine beiden Controller CabinetThumbnails
,ModalCtrl
. Basierend auf meine Anforderung ich bin mit der Richtlinie cabinet
und die CabinetThumbnails
zu Rendern paar widgets und klicken Sie dann auf auf jedes widget mit ModalCtrl
öffnen Sie ein popup-Menü. Die Widgets sind die Erzeugung von fein -, pop-up öffnet auch in Ordnung, aber (uibModalInstance.result.then(function (thumbnailData))
funktioniert nicht. Also , nicht schlagen, der service zu cabinetService.getComments(thumbnailData)
. Was ist hier falsch ?konnte nicht herausfinden.
function () {
'use strict';
angular
.module('myModule')
.directive('cabinet', function () {
return {
restrict: 'E',
replace: true,
controller: CabinetThumbnails,
controllerAs: 'ctrl',
bindToController: true,
link: link,
templateUrl: 'app/cabinet/cabinet.directive.html',
scope: {
thumbnail: '='
}
};
});
function link(scope, el, attrs) {
}
CabinetThumbnails.$inject = ['$scope','$uibModal','cabinetService'];
function CabinetThumbnails($scope,$uibModal,cabinetService) {
var vm = this;
vm.showImage = showImage;
activate();
function activate() {
}
function showImage() {
var uibModalInstance = $uibModal.open({
animation: true,
templateUrl: 'app/components/capture/cabinet.pop-up.html',
controller: ModalCtrl,
controllerAs: 'ctrl',
size: 'lg',
resolve: {
thumbnailData: function () {
return vm.thumbnail;
}
}
});
uibModalInstance.result.then(function (thumbnailData) {
spinner.spinnerShow();
//call the service to get the comments
cabinetService
.getComments(thumbnailData)
.then(function (data) {
$scope.comments = data;
})
.catch(function (err) {
growl.err('Unable to open the screen shot, Please try later !', {ttl: 20000});
})
.finally(spinner.spinnerHide);
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
}
}
ModalCtrl.$inject = ['$scope', '$uibModalInstance', 'thumbnailData', 'growl'];
function ModalCtrl($scope, $uibModalInstance, thumbnailData, growl) {
var ctrl = this;
ctrl.thumbnailData = thumbnailData;
ctrl.cancel = cancel;
function cancel() {
$uibModalInstance.dismiss();
}
}
}());
- Sie erwarten thumbnailData beheben übergeben werden, um Ihre uibModalInsrance.Ergebnis Versprechen Rückruf. Ich denke nicht, dass das richtig ist. Versuchen Sie sich einfach nur die vm.Miniatur, um cabinetService.getComments statt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier sind ein paar Dinge zu beachten:
Zuerst von all, Sie brauchen nicht zu verwenden
controllerAs
wenn Sie die Definition der modal-in-ui-bootstrap-sollten Sie nur verwendencontroller: myModalController as vm
(oder in deinem Fall Strg statt).In Ihrer Richtlinie jedoch sind Sie definieren
controllerAs: 'ctrl',
aber Sie später verwendenvm
.In modale controller sind nur mit der
$uibModalInstance.dismiss()
Methode, die entlassen Methode schließt das modale und aktiviert das Versprechen Ablehnung handler für dieuibModalInstance.result
Versprechen.Sollten Sie verwenden
$uibModalInstance.close()
zu beheben, aktivieren Sie die handler. ansonsten sind alle, der code würde nicht ausgeführt werden.Ich würde geschrieben haben es wie folgt
Hinzufügen und
zu ModalCtrl
Eigentlich zog ich die service-Aufruf zu den verweisen auf controller, habe es gelöst und gearbeitet.