Ho una direttiva che stampa messaggi flash per gli utenti. Funziona tutto bene sul mio localhost ma non appena riesco a testarlo su Heroku, il messaggio flash non appare. Ecco il controller.Direttiva/Fabbrica che non funziona in produzione
angular.module("alerts")
.controller("AlertsController", alertController)
alertController.$inject = ['Flash']
function alertController(Flash) {
var vm = this;
vm.flash = Flash;
}
La direttiva ...
angular.module("alerts")
.directive('flash', flash);
flash.$inject = ['$timeout'];
function flash ($timeout){
return {
restrict: 'E',
replace: true,
scope: {
text: '=',
type: '='
},
template: '<div id="flash_message" class="notification" ng-class="type"> {{text}} hello </div>',
link: function(scope, element, attrs){
$timeout(function(){
element.remove();
}, 5000);
}
}
}
E la fabbrica che gestisce la memorizzazione dei messaggi flash.
angular.module("alerts")
.factory("Flash", flash)
function flash() {
var messages = [];
var results = {
messages: messages,
printMessage: printMessage,
addMessage: addMessage
}
return results;
function printMessage() {
return results.messages
}
function addMessage(message) {
results.messages.push(message);
}
}
Il mio codice html ...
<div ng-controller="AlertsController as alerts">
<div ng-repeat="message in alerts.flash.messages">
<flash type="message.type" text="message.text"></flash>
</div>
</div>
Nessun errore viene visualizzato sulla console. La cosa divertente è che il messaggio flash è presentato nel file HTML non viene caricato.
Questo è ciò che è mostrato in localhost.
<div ng-repeat="message in alerts.flash.messages" class="ng-scope">
<div id="flash_message" class="notification ng-binding ng-isolate-scope success" ng-class="type" type="message.type" text="message.text"> Your link has been copied! hello </div>
</div>
Ma sulla produzione Heroku
<div ng-repeat="message in alerts.flash.messages" class="ng-scope"></div>
Sto creando il flash nel mio codice via ..
Flash.addMessage({type: "success", text: "Your link has been copied!"});
La mia domanda è, perché questo non appare sul mio codice di produzione ma appare sul mio localhost e come lo risolvo?
stai minificando il tuo javascript? –
Quale browser stai controllando per errori nella console? Alcuni browser mostrano alcuni errori, mentre altri solo avvertimenti o nessuno. Prova Firefox, Chrome, IE, Opera. Inoltre, sai se il tuo server sta memorizzando l'output nella cache? Poiché si tratta di file statici, è molto probabile che si verifichi il caching. Assicurati che quello che stai scaricando sia l'ultimo o un file memorizzato nella cache. – rodrigogq
Sto usando 'ngannotate-rails' per aiutarmi a minimizzare. Per quanto riguarda il browser, sto controllando tutti i browser. – jason328