角度 UI 路由器 - 没有 href 属性的中断

Angular UI Router - breaks without href attribute

本文关键字:属性 中断 href 没有 UI 路由器 角度      更新时间:2023-09-26

我正在尝试让角度UI路由器工作。在标准的 Web 项目中一切都很好,直到我导入到 .net 项目中,一切似乎都坏了。即:

<a ui-sref="someUrl">Click here</a>

在上一个项目中不起作用时。有趣的问题是,如果我添加一个带有值的 href 属性(不能是空字符串),则单击有效。这很烦人,因为我的两个具有相同代码的环境的行为不同。

有谁知道为什么 ui 路由器会在标签上没有设置显式 href 属性的情况下中断?git 文档通过代码示例明确指出,锚标记只需要 ui-sref 属性,因为它会在适用时自行编写 href 标记。

我正在使用角度 1.3.2 和角度 ui-router.0.2.11。

法典:

<h2>Home Page</h2>
<a href="#" ui-sref="someState">Click for profile</a>
<div ui-view="someStateContainer"></div>

从字面上看,这就是正文中的所有基本html。

主.js:

/**
 * Primary application definition
 */
var App = App || angular.module("App", [
    "ui.router"
]);

App.config(["$stateProvider", "$urlRouterProvider",
    function ($stateProvider, $urlRouterProvider) {
        $urlRouterProvider.otherwise("/");
        $stateProvider
            .state("someState", {
                views: {
                    "someStateContainer": {
                        templateUrl: "states/testState"
                    }
                }
            })
}]);

<a> 标签必须具有href属性才能被视为链接。UiRouter的ui-sref只是一种指导uiRouter如何推导出正确href的方法,然后它将在元素上设置。

我注意到在某些情况下,uiRouter 不会设置href。就我而言,有一个用url: "/dashboard"定义的状态。但是,ui-sref="/dashboard"不会生成href属性(甚至不会生成错误)。我必须设置ui-sref="dashboard"以便uiRouter生成href="#/dashboard"。也许还有更多情况下 uiRouter 失败而没有错误。