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

我正在使用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/somewhereelse并呈现somewhereelse视图。我猜然后,当它加载/placements/new时(出于某种原因)实际上正在寻找带有/new的url的根状态,该URL不存在。

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

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

另一个更新。

好的,这就是我的想法。

我以为我可以尝试破解一些东西来解决这个问题,并以为我可以添加一个/new状态并只调用$state.transitionTo('placements.new')而已,一切都会好起来的。原来,如果我这样做,则该URL变为myapp.com/placements/placements/new-wtf?

最佳答案

找到了!

我更改了要搜索的内容,并找到了this SO answer,将其引导至this issue。长话短说,我在中添加了<base href="/" />,瞧,一切都很好。

关于javascript - 我应该如何使用Angular UI Router?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19726139/

10-09 22:33