【问题标题】:AngularJS - Page redirecting to some other page in angular js while trying to get parameter from urlAngularJS - 页面重定向到 Angular js 中的其他页面,同时尝试从 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。你能看看吗

标签: javascript php angularjs


【解决方案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 是错误的或一些权限?代码看起来不错,但请插入更多代码。
      猜你喜欢
      • 2018-03-03
      • 2016-03-26
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 2018-07-10
      相关资源
      最近更新 更多