AngularJS - 页面重定向到 Angular js 中的其他页面,同时尝试从 url 获取参数

Posted

技术标签:

【中文标题】AngularJS - 页面重定向到 Angular js 中的其他页面,同时尝试从 url 获取参数【英文标题】:AngularJS - Page redirecting to some other page in angular js while trying to get parameter from url 【发布时间】:2015-10-12 04:22:13 【问题描述】:

这是我的控制器代码

.when('/showprofile/:UserID', 
      templateUrl: 'resources/views/layout/showprofile.php',
      controller: 'ShowOrderController',
     )

我通过url传递参数。

我正在尝试像这样通过 url 直接访问此页面

http://192.168.1.58/myapp/#/showprofile/8

但它正在将我重定向到

http://192.168.1.58/myapp/#/showprofile/:UserID

如何在我的视图中获取 url 值?

这是我的app.js,这是我的authCtrl.js

【问题讨论】:

重定向后控制台有错误吗? 我在控制台没有任何错误 你能把所有的路由器配置贴出来吗? @gonzalon 我已经更新了问题中的整个 app.js 和 authCtrl.js。你能看看吗 【参考方案1】:

在你的控制器中试试这个,它会根据 url 值返回对象,然后我们可以像这样得到尊重的值

//it will return the object
console.log($routeParams);

//get the specific url value like this
console.log($routeParams.UserID);
   or
console.log($route.current.params.UserID);

【讨论】:

如果你仍然没有得到意味着使用像这样的超时功能 $timeout(function() console.log($routeParams); , 100); 重定向的原因可能是什么?? 你得到了url中的参数值但是重定向是你的问题? 不,由于重定向问题,我无法获取 url 值 请检查您的 .htaccess 文件。【参考方案2】:

可以,但您必须在控制器中注入 $state 并获取

如果你使用 $state 意味着

console.log($state.params.userID);

【讨论】:

【参考方案3】:

试试这个...

   var sampleApp = angular.module('sampleApp', []);

sampleApp.config(['$routeProvider',
  function($routeProvider) 
    $routeProvider.
      when('/ShowOrder/:orderId', 
    templateUrl: 'templates/show_order.html',
    controller: 'ShowOrderController'
      );
]);


sampleApp.controller('ShowOrderController', function($scope, $routeParams) 

    $scope.order_id = $routeParams.orderId;

);

【讨论】:

【参考方案4】:

对,你在 app.js 中有这样的东西:

.when('/showprofile/:UserID', 
  templateUrl: 'resources/views/layout/showprofile.php',
  controller: 'authCtrl',
 )

这意味着 authCtrl 被分配给这个视图。 因此,有必要将 routeParams 注入 authCtrl(记住 javascript 中的依赖注入):

    app.controller('authCtrl', ['$scope','$rootScope','$routeParams','$location', '$http', 'Data', function ($scope, $rootScope, $routeParams, $location, $http, Data) 
    $scope.myVar = $routeParams.UserID;
    console.log('UserID: ',$scope.myVar);
    /* (...) */
]);

您能否告诉我,如果此更改会在控制台中记录用户 ID?或者是空的? 如果它记录,那么一切正常,您可以使用服务在各个控制器之间传递此变量。

【讨论】:

它仍然重定向到 ':UseID` 你能把 .php 文件改成 .html 吗? @cyan 我已更改为 .html。但还是没有效果 @Deena 昏迷了,抱歉。 @user5071852 你在什么环境下使用它?在某些网络服务器中?也许 .htaccess 是错误的或一些权限?代码看起来不错,但请插入更多代码。

以上是关于AngularJS - 页面重定向到 Angular js 中的其他页面,同时尝试从 url 获取参数的主要内容,如果未能解决你的问题,请参考以下文章

Angularjs 用户界面路由器。如何重定向到登录页面

AngularJS - 如何在整个页面加载时进行重定向?

使用 AngularJS 中的 UI-Router 将状态重定向到默认子状态

在 AngularJS 中使用 $window 或 $location 重定向

如果刷新(JWT)令牌未经授权(401响应),AngularJS重定向到登录

使用AngularJS中的UI-Router将状态重定向到默认子状态