我在后端使用弹簧靴,在前端使用角度靴。 在我的背后,我有一个restful服务,当用户调用定义的路由时,它会获取排序数据,然后将结果发送到前端。
在角度中,我在这个定义的路线上创建了一个服务,并且我正在解析结果以将它们渲染到视图中。一切工作正常,除了我想在用户单击开始批处理的按钮后重新加载页面。在这个按钮上,我已经有一个
ng-click
可以工作并开始我的批次。但我不知道点击此按钮后如何重新加载页面。
也许我不应该使用
ng-click
中的其他功能?
我的服务:
(function() {
'use strict';
angular
.module('pfja')
.factory('Publication', Publication);
Publication.$inject = ['$http'];
function Publication ($http) {
var urlOpeFlexFactureValide = 'api/invoice/valid-invoice';
var getAllValidInvoice= function(){
return $http.get(urlValidInvoice).then(
function(result){
return result.data;
}
);
};
return {
getAllValidInvoice: getAllValidInvoice
};
}
})();
我的state.js:
parent: 'app',
url: '/publication?page&sort&search',
data: {
authorities: ['ROLE_USER'],
pageTitle: 'home'
},
views: {
'content@': {
templateUrl: 'app/batch/publication/publication.html',
controller: 'PublicationController',
controllerAs: 'vm'
}
},
params: {
page: {
value: '1',
squash: true
},
sort: {
value: 'id,asc',
squash: true
},
search: null
},
resolve: {
....
validInvoiceList: ['Publication', '$q', function(Publication, $q){
return Publication.getAllValidinvoice();
}]
我的控制器:
(function() {
'use strict';
angular
.module('pfja')
.controller('PublicationController', PublicationController);
PublicationController.$inject = ['$scope',... 'Publication', 'validInvoiceList'];
function PublicationController ($scope, ..., Publication, validInvoiceList) {
var vm = this;
...
vm.validInvoiceList = validInvoiceList;
function runPublicationBatch(){
var invoice = new Array();
if (vm.validInvoiceList) {
vm.validInvoiceList.forEach(function(inv) {
if (inv.selected) {
invoice.push(inv);
}
});
}
ManualBatch.runPublicationBatch(invoice);
};
我的html:
<button ng-click="vm.runPublicationBatch()" class="btn btn-primary btn-md">
<span class="glyphicon glyphicon-play-circle"></span>
Start
</span>
</button>
//my ng-repeat with vm.validInvoice...
你首先需要注入服务
$window
才能使用
$window.location.reload();
function runPublicationBatch(){
$window.location.reload();
var invoice = new Array();
if (vm.validInvoiceList) {
vm.validInvoiceList.forEach(function(inv) {
if (inv.selected) {
invoice.push(inv);
}
});
}
ManualBatch.runPublicationBatch(invoice);
};
或者当您想重新加载页面时。
您可以通过
$route
,$state
服务这里重新加载
如果您使用 $routeProvider,则在 ng-click 函数中添加
$route.reload()
或
如果您使用 $stateProvider,则在 ng-click 函数中添加
$state.reload('state.name')
注意:基本上重新加载整个页面并不是最佳实践。所以尝试 避免重新加载