2014-10-27 58 views
3

我在我的应用程序中的网页,其中使用了,所以我已经添加了搜索“realoadOnSearch:假”导航时,它完美的作品

我的问题是,用不同的stateParam相同的状态:

,当我浏览到#/分类/从它工作正常,其他20页/ ...然后我有一个页面上的链接,以#/ CATEG ORY/3(20父类)和URL更新,但内容不(无控制台错误)

app.js(主要应用)

 .state('category', { 
      url: '/category/:categoryId/', 
      templateUrl: '/Home/Category', 
      controller: 'categoryCtrl', 
      reloadOnSearch: false 
     }) 

我已经尝试添加目标=“_自我”强制页面重新加载,它不工作

我也试图观看$ stateParams更改并没有什么

点击链接到#/分类/ 3#/分类/ 20(反之亦然)应导航到新页面并重新加载网址是首选是一个NG-的href,而不是因为它是由根控制器管理NG-点击数据,其中搜索应该重新载入页面(后者的作品,但不是前)

编辑:

我没有找到直接的解决方案,但是我只是禁用reloadOnSearch和我的排序按钮仍然工作,所以这对我的作品,现在作为一个解决方案。

+0

执行$ stateChangeStart和$ stateChangeSuccess事件火? – NevilleS 2014-10-27 13:19:06

+1

我试着在运行时从$ rootScope收听这两个事件,并且没有发生任何事件=/@NevilleS – LOGMD 2014-10-27 13:22:07

回答

2

问题是,reloadOnSearch不会做你认为它的工作;它实际上更像是reloadOnStateParams。将它设置为false可以防止您在只有stateParams更改的情况下进行状态更改,这是您在此处执行的操作(从#/category/3#/category/20)。

你可以看到这个记录的UI路由器问题页:https://github.com/angular-ui/ui-router/issues/1079

有一些解决方法在那里,但他们都不是很大。你可能是最好关闭用NG单击手动强制重新加载,这样的事情:

$state.transitionTo($state.current, $stateParams, { 
    reload: true, 
    inherit: false, 
    notify: true 
}); 
+0

我按照你的说法完成了,甚至他们仍然无法移动。我甚至手动设置$ stateParams.categoryId,它仍然保持。 ng-click会触发该事件。即时尝试更多的东西,生病回到这里更新 – LOGMD 2014-10-27 14:01:08

+1

根据你的状态定义,ui路由器可能会积极地阻止你这样做。我建议你在'$ state.transitionTo'中设置一个断点,然后遍历那里的逻辑,特别是'shouldTriggerReload'逻辑。看起来像'reloadOnSearch'可能取代你提供的所有'reload'选项... – NevilleS 2014-10-27 17:20:47

相关问题