Wie im Titel erwähnt, Ich versuche, einen Wert zu übergeben (ID) von einem Controller (PerksApprovalController) an einem anderen Controller gehen (PerksDetailsController). Finden Sie unten Bild für visuelle Referenz.Passing Wert zwischen Controllern in AngularJS
Was ich tun möchte, ist, wenn ich die „Show Details“ klicken, wird es mich auf eine andere Seite umleiten die Details des Control Number anzuzeigen, die ich weitergeben.
Unten ist meine Implementierung.
Details anzeigen Button-Code
<button class="btn btn-xs" ng-click="vm.showDetails(p.ControlNumber)">Show Details</button>
PerksApprovalCtrl.js
(function() {
'use strict';
var app = angular.module('app');
PerksApprovalController.$inject = ['$window', 'app.perksService', 'app.sharedValuesFactory'];
app.controller('app.perksApprovalController', PerksApprovalController);
function PerksApprovalController($window, PerksService, SharedValuesFactory) {
/* jshint validthis:true */
var vm = this;
vm.showDetails = function (controlNo) {
SharedValuesFactory.setControlNo(controlNo);
$window.location = '/PerksDetails/PerksView';
}
}
})();
PerksDetailCtrl.js
(function() {
'use strict';
var app = angular.module('app');
PerksDetailController.$inject = ['$scope', '$http', '$q', '$window', 'app.perksService', 'app.sharedValuesFactory'];
app.controller('app.perksDetailController', PerksDetailController);
function PerksDetailController($scope, $http, $q, $window, PerksService, SharedValuesFactory) {
var vm = this;
PerksService.getPerksItems(SharedValuesFactory.getControlNo()).then(function (response) {
vm.perksItemDetails = response.data;
});
}
})();
Ich habe einen Service erstellt, wie er in einigen Themen hier vorgeschlagen wurde.
sharedValuesFactory.js
(function() {
'use strict';
var app = angular.module('app');
// SharedValuesFactory.$inject = ['$http'];
app.factory('app.sharedValuesFactory', SharedValuesFactory);
function SharedValuesFactory() {
var controlNoShared;
return {
setControlNo: function (c) {
this.controlNoShared = c;
},
getControlNo: function() {
return this.controlNoShared;
}
}
}
})();
Mein Problem ist jetzt, jedes Mal wenn die Details Seite geladen wird, SharedValuesFactory.getControlNo()
kehrt undefined
. Sieht so aus, als ob SharedValuesFactory
nach der Umleitung oder dem Laden der Seite zurückgesetzt wird.
Haben Sie eine Idee, wie Sie einen Wert von einem Controller zum anderen übertragen können?
TIA
define 'page' und' redirect' ... weil es so aussieht, als ob Sie versuchen, ein Spa zu machen .. das sollte nicht eine 'after redirect' oder' after page (re) load' im üblichen haben Sinn. –
Wenn Sie Daten persistieren möchten ... in Betracht ziehen, sie zu speichern .. Sitzung/Cookie/LocalStorage/Datenbank .. etc etc –
Soweit ich sehen kann, sollte Ihr Code funktioniert haben, denn wenn der gesamte Standort neu geladen wird, die Daten im Service sollten bestehen bleiben. Können Sie dieses Problem auf Plunker oder Geige vielleicht replizieren? –