【问题标题】:Strange route behaviour angularJS with /?#/带有 /?#/ 的奇怪路由行为 angularJS
【发布时间】:2015-01-04 07:03:10
【问题描述】:

我实际上在 AngularJS 中遇到了路由问题。 事实上,当我第一次启动我的一个页面时,当前的 url 是“http://www.test.com/#/roadmaps/edit”。

当我点击页面的任何按钮时,我的页面会刷新并给我一个新的 URL,例如:“http://www.test.com/?#/roadmaps/edit”和“?”在“#”之前。

所以每次我在我的页面中填写不同的输入并单击一个按钮时,它第一次刷新(有问题......)并制作“?”符号出现在 URL 中。

你有什么想法吗?

这是我的实际路由功能:

function config($routeProvider) {
    $routeProvider.
        when('/roadmaps/edit', {
            templateUrl: 'partials/roadmap_edit.html',
            controller: 'RoadMapEditCtrl'
        }).
        when('/roadmaps/edit/:id', {
            templateUrl: 'partials/roadmap_edit.html',
            controller: 'RoadMapEditCtrl'
        })
}

第一行用于添加路线图,第二行用于修改。

你能帮帮我吗?

感谢提前

编辑:

这是导致此问题的按钮之一:

<li>
 <button style="margin-top:10px;" ng-click="selectAll()">Tout {{selectionner}}
</button>
</li>

还有 selectAll() 函数:

var isSelectedJour = false;
    $scope.selectAll = function () {
        if (isSelectedJour) {
            $scope.selectionner = "cocher";
        } else {
            $scope.selectionner = "décocher";
        }

        isSelectedJour = !isSelectedJour;

        $scope.mo = isSelectedJour;
        $scope.tu = isSelectedJour;
        $scope.we = isSelectedJour;
        $scope.th = isSelectedJour;
        $scope.fr = isSelectedJour;
        $scope.sa = isSelectedJour;
        $scope.su = isSelectedJour;
    };

【问题讨论】:

  • 您提供的路由代码看起来不错,问题出在其他地方。请提供您声明链接和内容的页面本身。
  • 发布完整的.config 方法定义块
  • 这是我的配置方法

标签: javascript angularjs


【解决方案1】:

您好,您可以使用

function config($routeProvider,$locationProvider) {
    $routeProvider.
        when('/roadmaps/edit', {
            templateUrl: 'partials/roadmap_edit.html',
            controller: 'RoadMapEditCtrl'
        }).
        when('/roadmaps/edit/:id', {
            templateUrl: 'partials/roadmap_edit.html',
            controller: 'RoadMapEditCtrl'
        });

        $locationProvider.html5Mode(true);
}

【讨论】:

  • # 不是问题:/ 它是“?”有问题的符号
  • 认为这是因为您在 URL 中发送了一些参数。如果我找到答案,我会再次在这里为您发布。拥抱!
  • 在没有路由参数的情况下测试过,同样的问题
  • 嗯,我在我的项目中测试了这里,并且 url 没有显示任何“?”。您的代码 html 怎么样,您使用的是 href、ng-href 还是 ui-sref ?还是您只是在浏览器中调用网址?
  • 我不使用其中的任何一个,它出现在仅关联 ng-click 函数的按钮元素上,函数内部没有任何重定向。
【解决方案2】:

在这里聚会很晚,但这是原因和两个解决方案:ReactJS with React Router - strange routing behaviour on Chrome。原因是任何按钮单击都被视为提交并且表单没有提交操作目标。一种解决方案是添加 preventDefault 事件处理程序。正如我在评论中指出的那样,修复它所需要做的就是将 &lt;button&gt; 更改为 &lt;span&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 2017-09-01
    • 2016-09-25
    • 2017-08-06
    • 1970-01-01
    相关资源
    最近更新 更多