我已经在互联网上搜索了几天,但找不到我想要的东西。
我正在使用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/