【问题标题】:How do I ignore parts of the URL?如何忽略部分 URL?
【发布时间】:2014-03-22 18:24:34
【问题描述】:

目前我有一个本地服务器在 localhost 上运行我的主页

理想情况下,我希望 url 有一个密钥,我将其发送到我的数据库以获取数据,然后主页加载该数据

例如,有人输入 localhost/4962 的 url,然后 4962 被发送到数据库,同时 localhost 加载。我正在使用 angularJS,所以我确实有办法通过这样做来获取 url...

var module = angular.module('app', []).run(function($rootScope, $location) {
    $rootScope.location = $location;
});

然后 location.absUrl() 为我获取完整的 URL。

但显然 localhost/4962 没有页面,所以我只得到 404。 如何忽略 url 中的数字?另外我如何获得数字,如果哈希可以简化问题,我愿意做 localhost/#/4962。

编辑: 以下是一些有用的答案。这是我的选择 -

var app = angular.module("app", ["ngRoute"]);

app.config(function($routeProvider) {
    $routeProvider
      .when('/:message',
      {
        template: " ",
        controller: "AppCtrl"
      }).otherwise({redirectTo: '/'});
});

app.controller("AppCtrl", function($scope, $routeParams) {

    $scope.model = {
        message: $routeParams.message
    }
    //debugging
    console.log($scope.model.message)
});

我需要拥有

<ng-view></ng-view>

在 index.html 中。 Angularjs using $routeProvider without ng-view 有一种方法可以避免添加 ng-view。下次试试。

【问题讨论】:

  • 你为什么不解析 localhost/4962 ?您应该能够使用/ 分隔符split 整个网址。使用拆分方法。然后选择你要使用的部分。
  • 我仍然有得到 404 的问题,除非我想用散列做类似 localhost/#/4962 的事情,但我想避免这种情况

标签: javascript php angularjs url


【解决方案1】:

这样做:

angular.module('app', ['ngRoute']).config(function($routeProvider, $locationProvider){

    $routeProvider.when('/:number?', {
        controller: 'homeCtrl',
        templateUrl: '/home.html'
    });

    $locationProvider.html5Mode(true);

}).run(function(){
    ...
});

在这种情况下,number 是可选的路由参数(因为它的末尾有 ?)。然后你可以从控制器获取号码:

angular.module('app').controller('homeCtrl', function($routeParams){

    var number = $routeParams.number;

});

不要忘记包含angular-route.js 文件;)

【讨论】:

  • 这似乎正是我想要的,我把它放在哪里?
  • 似乎localhost/4962 仍然给出了 404,“在此服务器上未找到请求的 URL /4962”,控制台中没有错误。
  • @DustinClark 似乎您的代码中有一些错误。例如,如果您在 jsfiddle 上重现您的代码,我将能够提供帮助
  • 我似乎连一个简单的准系统示例都无法在 jsfiddle jsfiddle.net/KbkCT 中工作
  • @DustinClark 我修复了您的小提琴示例:jsfiddle.net/KbkCT/3 在本地尝试,因为无法通过 jsfiddle 上的路线导航
【解决方案2】:

您可以使用$location.path()-Function,应该只返回路径(不带标签)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 2017-09-09
    • 2013-10-02
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多