我试图让角度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"
}
}
})
}]);
答案 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