0

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

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

问题如下:当我像这样在我的 url 栏中手动键入部分 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: '/'
      });    
  });
4

2 回答 2

0

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

稍后我将更新您的 jsfiddle,希望这对现在有所帮助。

于 2013-07-19T16:08:41.363 回答
0

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

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

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

于 2013-07-19T16:11:09.127 回答