从Angular中的url获取参数

时间:2015-04-09 12:04:18

标签: javascript angularjs window.location

我有问题。我现在正在使用工厂来处理我的应用程序中的两个控制器的dtas。当我点击一个链接时,它会将我路由到另一个带有特定网址的视图,这是我想要重复使用的最后一个标记,所以我试图将其切成像

window.location.pathname.split("/").slice(-1)[0]

但似乎无效,并说:$ location未定义:/ 关于如何解决这个问题的任何想法?也许是一个微不足道的错误,但是......眼睛看得越多:)

portApp.controller("itemController", ["$scope", "workFactory",
    function($scope, workFactory, $stateParams) {

        console.log(window.location.pathname.split("/").slice(-1)[0]);
        $location.path(); // it says $location is undefined in the console

        var newpath = $stateParams.itemLink;
        $scope.onViewLoad = function(){
            console.log(newpath);
        };
    }
]);

以下是jsfiddle - https://jsfiddle.net/d5bjrjov/

1 个答案:

答案 0 :(得分:2)

在你的控制器中,你没有注射$location;为什么它显示$location未定义。

portApp.controller("itemController", ["$scope", "workFactory",
    function($scope, workFactory, $stateParams) {

必须是

portApp.controller("itemController", ["$scope", "workFactory", '$stateParams', '$location',
    function($scope, workFactory, $stateParams, $location) {
  

在您的州提供商

你有

 .state('items', {
                url: '/items/{itemLink}',
                controller: 'itemController'
            });

网址格式错误。如果您希望在网址中包含动态数据,则必须使用:itemLink作为模式。

 .state('items', {
                    url: '/items/:itemLink',
                    controller: 'itemController'
                });

在您的控制器中,您可以使用$stateParams

获取它
$stateParams.itemLink