$ location.search无效 - 角1.6.4

时间:2017-06-01 17:25:50

标签: angularjs node.js angularjs-directive

这是我的网址:

http://localhost:8091/apps/dashboard/#!/#%2Findex%3Fsession=564badc5919b42fa880f1b34ae5d0740

我从下面提到的代码中得到'未定义':

 $location.search().session

这里有什么问题?我是Angular的新手,想从查询字符串中获取会话变量。

提前致谢!

3 个答案:

答案 0 :(得分:2)

您的app.config中需要包含 $ locationProvider 。 然后,您需要在使用$ location.search()之前配置html5Mode。 以下示例将为您提供帮助。

app.config(['$routeProvider', '$locationProvider', function($routeProvider, 
$locationProvider) {
    $routeProvider
        .when("/", {
            templateUrl : 'xxx.html'
            ,  controller: 'xxxController'
        });

    $locationProvider.html5Mode({
        enabled: true,
        requireBase: false
    });

干杯!

答案 1 :(得分:1)

想到我的网址构造不正确。重新构建了URL,并且所有URL都按预期开始工作。

对我来说,这是正确的网址格式:

http://localhost:8091/apps/SPMDashboardApp/#!/index?session==564badc5919b42fa880f1b34ae5d0740

答案 2 :(得分:0)

您也可以尝试以下方法:

  

由于AngularJS将查询字符串作为一组键/值对提供,   使用这样的东西:

URL-http://my.site.com/?myparam=33

if ( $location.search().hasOwnProperty( 'myparam' ) ) {
   var myvalue = $location.search()['myparam'];
   // 'myvalue' now stores '33'
}
  

您必须在控制器中注入$ location。

很容易忘记,因为有两个位置(如所有注射):

app.controller( 'MyController', [ '$scope', '$location', function( $scope, $location )

您必须在HTML中添加“基本”元素。 (当您的应用程序投入生产时非常重要)

  

此行对于支持$ location HTML5模式是必需的(用于查询   字符串参数)。

<base href="/">