1

我在互联网上搜索了几天,但找不到我要找的东西。

我正在使用 angularjs 构建一个 SPA,但我正在努力解决我认为应该非常基本的事情。出于一种ASP.NET MVC心态,我正在尝试设置用于列出数据和创建新数据的路线,例如:

.state('placements', {
    abstract: true,
    url: '/placements',
    template: '<div ui-view></div>'
})
.state('placements.list', {
    url: '',
    templateUrl: mapPathToViews('placements.list'),
    controller: 'PlacementController'
})
.state('placements.new', {
    url: '/new',
    templateUrl: mapPathToViews('placements.new'),
    controller: 'PlacementController'
})

因此,在设置了这些状态后,我认为导航到/placements/new会给我“新展示位置”视图。

如果我使用 ui-sref 导航,这将非常有效

问题来自当我myapp.com/placements/new在浏览器中输入并点击 GO 时,根本没有匹配的路线。但是,如果我去,myapp.com/placements我会按预期看到正确的视图。

我的问题是:我认为应该如何设置路由器是正确的,还是我需要为新的位置设置一个完全独立的状态,例如myapp.com/newplacement

更新

这似乎与 ui-router 在第一页加载时计算状态的方式有关。如果我使用 url 加载页面myapp.com/placements/new,然后单击指向具有 url 的状态的导航项'/'(意思是主页,对吗?)然后 url 变为myapp.com/placements/并呈现主页视图。同样,如果我单击另一个指向'/somewhereelse'url 的导航链接myapp.com/placements/somewhereelsesomewhereelse则会呈现视图。我猜想当它加载/placements/new它时(出于某种原因)实际上是在寻找一个根状态,其 url/new不存在。

当我添加$urlRouterProvider.otherwise('/not-found');并重新加载页面时/placements/new,这一点得到了证明,url 变为myapp.com/placements/not-found.

这是一个错误吗?(抱歉,未记录的功能)还是我这里有问题?

另一个更新。

好的,这让我很头疼。

我想我会尝试破解一些东西来解决这个问题,并认为我会通过添加一个/new状态并调用$state.transitionTo('placements.new')它而侥幸逃脱,一切都会好起来的。事实证明,如果我这样做,网址就会变成myapp.com/placements/placements/new- wtf?

4

1 回答 1

0

找到了!

我更改了我正在搜索的内容并找到了这个 SO 答案,这导致我遇到了这个问题。长话短说,我添加<base href="/" />到我的 index.html 和瞧,一切运行良好。

于 2013-11-02T19:09:47.680 回答