Angular UI Router - 没有href属性的中断

时间:2014-11-24 17:03:45

标签: javascript .net angularjs model-view-controller

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

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

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

有没有人知道为什么ui-router会在没有在标签上设置明确的href属性的情况下破解? git docs明确表示带有代码示例的锚标签只需要ui-sref属性,因为它会在适用时自行编写href标记。

我使用了角度1.3.2和angular-ui-router.0.2.11。

代码:

<h2>Home Page</h2>

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

字面上正文中的所有基本html。

main.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"
                    }
                }
            })
}]);

1 个答案:

答案 0 :(得分:0)

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

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

HTH