Javascript 我应该如何使用Angular UI路由器?

Javascript 我应该如何使用Angular UI路由器?,javascript,angularjs,url-routing,single-page-application,angular-ui,Javascript,Angularjs,Url Routing,Single Page Application,Angular Ui,我在互联网上搜索了几天,但找不到我要找的东西 我正在用angularjs建造一个水疗中心,但我正在努力做一些我认为应该非常基本的事情。出于ASP.NET MVC的心态,我尝试设置列出数据和创建新数据的路径,例如: .state('placements', { abstract: true, url: '/placements', template: '<div ui-view></div>' }) .state('placements.list',

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

我正在用angularjs建造一个水疗中心,但我正在努力做一些我认为应该非常基本的事情。出于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会给我提供新的placements视图

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

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

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

使现代化 这似乎与ui路由器计算第一页加载状态的方式有关。如果我加载带有url myapp.com/placements/new的页面,然后单击指向url为“/”表示主页的状态的导航项,对吗?然后url变为myapp.com/placements/,并呈现主页的视图。类似地,如果单击指向“/somewhere”的另一个导航链接,url将变为myapp.com/placements/somewhere,并呈现somewhere视图。我猜,当它加载/placements/new时,出于某种原因,它实际上是在寻找一个url为/new的根状态,而这个url并不存在

当我添加$urlRouterProvider时,这一点就得到了证明;然后在/placements/new重新加载页面,url变为myapp.com/placements/not-found

这是虫子吗?对不起,没有文档的功能或者我这里有什么问题吗

另一个更新。 好了,这是我的头了

我想我会尝试破解一些东西来解决这个问题,我想我可以添加一个/新的状态,只需调用$state.transitions到“placements.new”,一切都会好起来。如果我这样做,url就会变成myapp.com/placements/placements/new-wtf?

找到了


我改变了我一直在寻找的东西,找到了我想要的东西。长话短说,我在index.html中添加了内容,瞧,一切正常

您是否应该将“placements.new”的url分配为“/placements/new”?否,因为存在一个抽象状态,它是父状态,因此url会变为/placements/new(通过魔法)。它在没有mapToView调用的情况下工作吗?就像您只是内联一些模板一样?不,mapToViews只是一个将字符串和传入的值连接在一起的函数。正如我所说,当我使用ui sref或$state.transitiono时,这一切都能很好地工作,但如果我重新加载页面,则不会