2016-01-25 2 views
0

Я пытаюсь перенаправить свое приложение на следующую ссылку, используя $ location.path ('/ enterprise/update /' + enterprise.id);

Текущий URL, когда я нажимаю на кнопку является http://localhost:8080/#/enterprise/view , и я хотел бы, чтобы это было изменено на http://localhost:8080/#/enterprise/update/0
(The 0 здесь представляет собой идентификатор)

Функция редактирования является тот, который вызывается, когда я нажмите кнопку для перенаправления.

Соответствующий код: EnterpriseCtrl.js

app.controller('EnterpriseCtrl', ['$scope', 'Enterprise', '$location','$http','$route','$routeParams','$resource', function($scope, Enterprise, $http, $route, $location, $rootScope) { 

    $scope.enterprises = Enterprise.list({}, function (response) { 
     return response; 
     }); 
    $scope.add = function(){ 
     Enterprise.save($scope.enterprise,function(){}); 
     $scope.enterprise = null; 
    }; 
    $scope.delete = function(enterprise, index){ 
    alert("Do you really want to delete an Enterprise at index " + (index+1) + "?"); 
    //book.$remove(); 
    Enterprise.remove(enterprise); 
    $scope.enterprises.splice(index, 1); 
}; 
    $scope.edit = function(enterprise){ 
    console.log(enterprise.id); 
    console.log(location); 
    console.log($location); 
    $location.path('/enterprise/update/' + enterprise.id); 
    }; 
    // $scope.enterprise = Enterprise.get({id: $route.current.params.id}); 
    $scope.update = function(){ 
    Enterprise.update($route.current.params.id); 
    $location.path($rootScope.history.view); 
    }; 

}]); 

app.js

var app = angular.module('mpsApp', ['ngRoute','ngResource']);      
app.config(['$routeProvider','$locationProvider', 
    function ($routeProvider,$locationProvider) { 
    $routeProvider. 
     when('/', { 
     templateUrl: 'home.html' 
     }). 
     when('/enterprise/view', { 
     controller: 'EnterpriseCtrl', 
     templateUrl: 'showEnterprise.html' 
     }). 
     when('/enterprise/add', { 
     controller: 'EnterpriseCtrl', 
     templateUrl: 'addEnterprise.html' 
     }). 
     when('/enterprise/update/:id', { 
     controller: 'EnterpriseCtrl', 
     templateUrl: 'updateEnterprise.html' 
     }). 
     otherwise({ 
     redirectTo: '/' 
     }); 
    } 
]); 

ошибка, что я получаю

TypeError: $location.path is not a function 
at Scope.$scope.edit (EnterpriseCtrl.js:29) 
at $parseFunctionCall (angular.js:12330) 
at callback (angular.js:22940) 
at Scope.$eval (angular.js:14381) 
at Scope.$apply (angular.js:14480) 
at HTMLButtonElement.<anonymous> (angular.js:22945) 
at HTMLButtonElement.eventHandler (angular.js:3009) 

ответ

9

Ваша зависимость инъекции массива/параметры из заказ. Должно быть:

[  '$scope', 'Enterprise', '$location', '$http', '$route', '$routeParams', '$resource', 
function($scope, Enterprise, $location, $http, $route, $routeParams, $resource) { 

Обратите внимание, как каждая услуга элемента массива соответствует параметрам в функции.

+0

спасибо большое! Это сработало! – Manish

+0

Спасибо! Это спасло мой день. –

+0

спасибо. Я была такая же проблема. –

Смежные вопросы