$window.location.href 未定义为 angularjs

$window.location.href is undefined with angularjs

我使用 ASP.NET MVC6、angularjs 和 Bootstap 编写应用程序。 我想在 bootstrap 模式关闭后重新加载页面。 为此,我使用 $window.location.href 但它未定义。

这是我在 angular 控制器中的方法:

 angular
    .module('LSapp')
    .controller('CustomersCtrl', CustomersCtrl);

CustomersCtrl.$inject = ['$scope', '$http', '$location', '$modal', '$templateCache', '$window'];

function CustomersCtrl($scope, $http, $location, $modal, $window) {
     $scope.edit = function(id)
    {
        var customer = getCustomer(id);
        console.log('Customer => FirstName : ' + customer.FirstName);
        var reqEditCustomer = $http({ url: '/api/customers/', dataType: 'json', method: 'PUT', data: JSON.stringify(customer), contentType: 'application/json; charset=utf-8' });
        reqEditCustomer.success(function (dataResult) {
            $scope.customer = dataResult;
            $scope.cancel();       
        });
        $scope.customers = getListCustomers();
        $window.location.href = '/';
    }
}

除了重定向之外的所有运行。

我希望有人能帮助我。欢迎任何帮助。

你可以使用

$location.path('/');

而不是

$window.location.href = '/';

试试这个 -

$location.path('/').replace();
if(!$scope.$$phase) $scope.$apply()

我试图从视图而不是模式重定向。是工作。 所以我认为是我的模态重定向造成了问题。

这是我的完整控制器:

(function () {
'use strict';

angular
    .module('LSapp')
    .controller('CustomersCtrl', CustomersCtrl)
    .controller('CustomersGetCtrl', CustomersGetCtrl);

CustomersCtrl.$inject = ['$scope', '$http', '$location', '$modal', '$templateCache', '$window'];

function CustomersCtrl($scope, $http, $location, $modal, $window) {
    /*---------------------------------------------------------------------------------
     *                      Obtain Customer List
     *--------------------------------------------------------------------------------*/
    function getListCustomers()
    {
        var reqCustomers = $http.get('/api/Customers');
        reqCustomers.success(function (dataResult) {
            $scope.customers = dataResult;
        });

        return $scope.customers;
    }
    getListCustomers();
    /*---------------------------------------------------------------------------------
     *                      Obtain Customer by ID
     *--------------------------------------------------------------------------------*/
    function getCustomer(id) {
        var reqGetCustomer = $http({ url: '/api/customers/' + id, method: 'GET' });
        reqGetCustomer.success(function (dataResult) {
            $scope.customer = dataResult;
        })
        return $scope.customer;
    }

    $scope.edit = function(id)
    {
        var customer = getCustomer(id);
        console.log('Customer => FirstName : ' + customer.FirstName);
        var reqEditCustomer = $http({ url: '/api/customers/', dataType: 'json', method: 'PUT', data: JSON.stringify(customer), contentType: 'application/json; charset=utf-8' });
        reqEditCustomer.success(function (dataResult) {
            $scope.customer = dataResult;
            $scope.cancel();       
        });
        $scope.customers = getListCustomers();
        //This is that I tried to redirect
        //$window.location.href = '/';
        //$location.path('/').replace();
        //if(!$scope.$phase) $scope.$apply
    }

    /*---------------------------------------------------------------------------------
    *                      Manage Customer Details Modal
    *--------------------------------------------------------------------------------*/
    $scope.openDetails = function (id) {
        var modalInstance = $modal.open({
            templateUrl: 'Modals/Customers/details.html',
            controller: $scope.modalDetails,
            resolve: {
                id: function () {
                    return id
                }
            }
        });
    }

    $scope.modalDetails = function($scope, $modalInstance, id)
    {
        if (angular.isDefined(id)) {
            var reqGetCustomer = $http({ url: '/api/Customers/' + id, method: 'GET' });
            reqGetCustomer.success(function (dataResult) {
                $scope.customer = dataResult;
            });
        } else { alert('id is undefined'); }

        $scope.cancel = function () {
            $modalInstance.dismiss('cancel');
        }
    }

    /*---------------------------------------------------------------------------------
    *                      Manage Customer Edit Modal
    *--------------------------------------------------------------------------------*/

    $scope.openEdit = function (id) {
        var modalInstance = $modal.open({
            templateUrl: 'Modals/Customers/edit.html',
            controller: $scope.modalEdit,
            resolve: {
                id: function () {
                    return id
                }
            }
        });
    }

    $scope.modalEdit = function ($scope, $modalInstance, id) {
        if (angular.isDefined(id)) {
            var reqGetCustomer = $http({ url: '/api/Customers/' + id, method: 'GET' });
            reqGetCustomer.success(function (dataResult) {
                $scope.customer = dataResult;
            });
        } else { alert('id is undefined'); }

        $scope.cancel = function () {
            $modalInstance.dismiss('cancel');
        }
    }
}

//Controller to redirect since View
CustomersGetCtrl.$inject = ['$scope', '$http', '$routeParams', '$window'];

function CustomersGetCtrl($scope, $http, $routeParams, $window)
{
    function getCustomer()
    {
        var reqGetCustomer = $http({ url: '/api/customers/' + $routeParams.id, method: 'GET' })
        reqGetCustomer.success(function (dataResult) {
            $scope.customer = dataResult;
        })
    }
    getCustomer();

    $scope.edit = function () {
        $window.location.href = '/';
    }
}
})();

我使用 ui.router 而不是 ng -router 解决了这个问题。