Angularjs - 使用$ routing - 当我手动输入“#/ section / + myId”时,它会重置我的页面

时间:2013-07-19 14:14:29

标签: angularjs angularjs-routing

所以我正在尝试在我的应用中实现路由。以下是我尝试做的一个示例jsFiddle:http://jsfiddle.net/GeorgiAngelov/9yN3Z/114/

到目前为止一切正常,当我在各个部分中移动时,我的路由发生了变化,一切都很好。

问题如下:当我在我的网址栏中手动输入部分ID时,我的本地主机:/ section / s-3我被重定向到s-1,我的页面刷新,我松开所有部分到目前为止,我已添加了根。有时它可以工作,我可以在这样的部分之间切换,但有时会刷新,当我点击两次输入时就会发生。

这是一个奇怪的问题,我不确定如何调试它。这是我的执行路由服务。

app.config(function ($routeProvider) {
        $routeProvider
      .when('/', {
        redirectTo: '/section/1',
        templateUrl: '/tpl.html',
      })
      .when('/section/:sectionId', {
        templateUrl: '/tpl.html',
      })
      .otherwise({
        redirectTo: '/'
      });    
  });

2 个答案:

答案 0 :(得分:0)

我看了你的应用程序,从我的观点来看,你正在使用奇怪的方法将DOM对象添加到你的视图中,有点像jquery模板。 实际上每次你在一个部分里面点击你正在使用不同的范围并在一个范围内添加一个根它是其他人看不到的:相反你应该使用控制器之间共享的服务,这样只有服务包含所有的部分和所有的根源:angularjs services

稍后我会更新你的jsfiddle,希望现在有所帮助。

答案 1 :(得分:0)

我在chrome和firefox上测试了你的应用。使用chrome,如果选择url并输入enter(不更改它),则重新加载页面,因此按两次Enter键将始终刷新页面。使用firefox,这不会发生,所以显然你在FF上没有这个问题(尽管用户可以直接按下刷新按钮)。

如果刷新页面,您显然会丢失已插入的内容。您需要在刷新之间保留要保留的信息。如果您不想将其发送到服务器,则可以使用html5本地存储。你可以在这里看到一个例子:

http://todomvc.com/architecture-examples/angularjs/#/