angular js:重新加载页面并点击

时间:2017-04-09 09:22:05

标签: angularjs

我正在使用弹簧靴为我的后端和角度为前面。 在我的背后,我有一个宁静的服务,当用户调用一个已定义的路径时,它会获取一个排序数据,然后将结果发送到前面。

在角度,我在这个定义的路线上做了一个服务,我正在解析结果,将它们渲染到视图中。一切正常,除非我想在用户点击启动我的批次的按钮后重新加载页面。在这个按钮上,我已经有一个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...

2 个答案:

答案 0 :(得分: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服务here

重新加载

答案 1 :(得分:1)

如果您使用$ routeProvider,则在ng-click功能

中添加$route.reload()

如果您使用$ stateProvider,则在ng-click功能

中添加$state.reload('state.name')
  

注意:基本上重新加载整个页面不是最佳做法。所以试着   避免重新加载