angularjs – 在我的应用程序的初始加载为什么ui路由器状态未设
当我访问我的应用程序https://localhost/my-app/resources/index.html时,我有逻辑去我自定义的默认状态.但是,当我想直接访问我的应用程序的一个特定部分(即https://localhost/my-app/resources/index.html#/orders/draft)时,状态未设置(模板也不会加载到ui-view指令).一旦初始加载完成(默认状态设置),那么我可以直接url到我心中的内容.
我想我在应用程序中加载了一些基本概念,但是我希望状态会被设置,因为在$location.url()中定义了url, 我的代码片段,用于处理初始加载时的状态: $http.get("Navigation").then(function(response){ var navigationObjects = response.data,directUrl = $location.url(),stateName = null; scope.availableStates = ims360RouterStateService.getAvailableStates(navigationObjects); if (!directUrl) { scope.updatePrimaryState(scope.availableStates[0]); } else { //TODO there's probably a better way to do this //parsing out the state name,requires that the state name matches the url,this fails when I have a place holder (such as an id to a resource) stateName = directUrl.substring(1).replace(///g,"."); $state.go(stateName); } }); 在这段代码中,我从服务器获取导航对象,确定用户有哪些ui-router状态.所有我定义的状态然后被过滤到可用状态,这是我用于我的导航ui. 另外,“updatePrimaryState(…)包括调用$state.go(…) 那么为什么状态不是初始加载的呢?而如果这个IS预期的行为,那么什么是一个很好的方式来指导用户指定的url? UPDATE 我创建了一个显示预期行为的空格(http://plnkr.co/edit/m9gQLOZmqaAY88wSc6wC?p=preview).我试图复制我的问题,但在简单的情况下,它只是按预期工作.所以显然,我的目的是有一些不正确的东西,但是我的设置与plunker非常相似.要测试我在我的应用程序中看到的场景,您需要: >在单独的窗口中启动plunker视图 在我的应用程序加载后,加载的状态是空的状态,名称为“”,其中的URL为“^”. 更新2 我的想法一直是在我的应用程序启动后重新播放该事件,但是我仍然有时间问题,事件侦听器似乎是最初的初始化.我首先将它添加到myApp.run()块,但广播仍在事先发生.将广播投放到应用程序的主要指令的链接功能(ui视图)的工作原理,但不能确定这是一个很好的方法.有没有更好的办法?
我刚刚发现这个
http://niclassahlin.com/2014/05/31/kickstarting-angular-ui-router/,它的作用就像我的魅力.
使用app.js中的下一个代码可以实现初始状态: app.run(['$state',function ($state) {}]) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |