我最近发现并开始在JHipster中进行开发。
我面临的第一个障碍是自动关闭警报。到目前为止,我已经了解到JHipster使用Bootstrap UI alerts,因此我正在尝试调整sample project of JHipster中捆绑的警报,当用户尝试登录时,警报显示在主屏幕中(绿色的):
警报的HTML代码如下:
<div ng-switch="vm.isAuthenticated()">
<div class="alert alert-success" ng-switch-when="true" data-translate="home.logged.message" translate-values="{username: '{{vm.account.login}}'}">
You are logged in as user "{{vm.account.login}}".
</div>
</div>
我这样修改的:
<div class="alert alert-success" ng-switch-when="true" data-translate="home.logged.message" translate-values="{username: '{{vm.account.login}}'}" close="closeAlert()" ng-if="show" dismiss-on-timeout="3000" >
You are logged in as user "{{vm.account.login}}".
</div>
Javascript文件home.controller.js如下所示:
(function() {
'use strict';
angular
.module('pruebablogApp')
.controller('HomeController', HomeController);
HomeController.$inject = ['$scope', 'Principal', 'LoginService', '$state', 'AlertService'];
function HomeController ($scope, Principal, LoginService, $state, AlertService) {
var vm = this;
vm.account = null;
vm.isAuthenticated = null;
vm.login = LoginService.open;
vm.register = register;
$scope.$on('authenticationSuccess', function() {
getAccount();
});
getAccount();
function getAccount() {
Principal.identity().then(function(account, $scope) {
vm.account = account;
vm.isAuthenticated = Principal.isAuthenticated;
if (vm.isAuthenticated){
$scope.show = true;
}
});
}
function register () {
$state.go('register');
}
function closeAlert () {
$scope.show = false;
}
}
})();
此方法不适用于我。我尝试了其他方法,例如this one或this one(应该适用于按钮单击)。
我究竟做错了什么?
最佳答案
JHipster使用AlertService作为服务,以创建要创建的消息类型(例如,信息,警告,危险等),并且消息与标签一起显示。查看示例应用程序中的实体,以查看标记jhi-alert的实际作用。您只需在html站点中编写标签,然后在您的控制器中使用AlertService创建要创建和显示的消息。
@GaëlMarziou,您的回答更深入地了解了幕后实际发生的事情。我可以看吗?
关于javascript - 如何在JHipster上自动关闭警报?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43259047/