我有一个指令可以为用户打印Flash消息。 在我的本地主机上一切正常,但是一旦我在Heroku上测试它,Flash消息就不会出现。 以下是控制器。
angular.module("alerts")
.controller("AlertsController", alertController)
alertController.$inject = ['Flash']
function alertController(Flash) {
var vm = this;
vm.flash = Flash;
}
该指令定义了一个 AngularJS 应用程序的根元素。
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);
}
}
}
负责存储闪存信息的工厂。
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);
}
}
我的 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>
控制台没有出现错误。有趣的是,HTML中呈现的闪存信息未加载。
这是在本地主机上显示的内容。
<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>
但在 Heroku 生产环境中
<div ng-repeat="message in alerts.flash.messages" class="ng-scope"></div>
我正在通过代码创建 Flash。
Flash.addMessage({type: "success", text: "Your link has been copied!"});
我的问题是,为什么这在我的本地环境中出现了但是在生产代码中没有出现,我该如何解决?
ngannotate-rails
来帮助我进行代码压缩。至于浏览器方面,我会检查所有的浏览器。 - thank_youFlash.addMessage
没有发生,或者它所做的不会添加到alerts.flash.messages
中。需要进行更多的调试。 - Kevin Bfunction flash()
对象,一个用于指令,另一个用于工厂。如果它们只是在不同的文件中但没有被包裹在(function() { [...] })()
中,它们都将在全局范围内,并可能导致问题。 - Tom