Angular js:在 ng-click 后重新加载页面

问题描述 投票:0回答:2

我在后端使用弹簧靴,在前端使用角度靴。 在我的背后,我有一个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...
angularjs
2个回答
2
投票

你首先需要注入服务

$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
服务这里

重新加载

2
投票

如果您使用 $routeProvider,则在 ng-click 函数中添加

$route.reload()

如果您使用 $stateProvider,则在 ng-click 函数中添加

$state.reload('state.name')

注意:基本上重新加载整个页面并不是最佳实践。所以尝试 避免重新加载

© www.soinside.com 2019 - 2024. All rights reserved.