AngularJS + Rails:后退按钮“警告:尝试不止一次加载角度。”

我可以使用我的应用程序并更改页面而不会出现问题。 使用后退按钮也不是问题…除非我回到我第一次打开应用程序的历史记录中。 因此,index – > pg 1 – > index – > pg 2允许我按两次后退按钮,返回索引然后pg 1.下一次返回单击产生此错误并且ng-view不加载:

"WARNING: Tried to load angular more than once." 

很明显,通常后退按钮只是使用$ routeProvider,这对我来说是这样的(比显示的路线多,但结构相同)

  .config(['$routeProvider', function($routeProvider) { $routeProvider. when('sampleUrl', { templateUrl: 'sampleTemplate', controller: 'sampleCtrl' }). otherwise({ redirectTo: 'sampleUrl' }); }]); 

但是,最后一个后退按钮不再仅仅使用$ routeProvider来更新ng-view,而且还重新加载包含ng-view的Rails布局。 布局的一般结构如下

 %html{ 'ng-app' => 'myApp' } %body#dashboard(ng-controller='baseCtrl') navbar stuff %section.clearfix.aaux(ng-view) javascript include tag for rails asset pipeline 

我的Rails root看起来像这样

  root "dashboard/patients#index" 

这是我到目前为止所看到/考虑的内容:

试图加载Angular多次

无关紧要。 我的templateUrl对所有路由都是正确的; 除非我点击回到开头一切都很好,花花公子。

这个

“但是如果你的templateUrl是错误的,那么它将导致一个递归,重复加载index.html一遍又一遍地加载angular(和其他所有东西)。”

可能是相关的,因为它正在重新加载页面上的ng-app,我相信它也是index.html在他们的应用程序中。 但是从我所看到的Rails应用程序与Angular的集成中,通常的做法就是将其放入

 %html{ 'ng-app' => 'ekoApp' } 

在布局上。

警告:试图加载角度不止一次。 Angular JS

我的应用程序中肯定只有一个ng-app,但是它被加载了两次。 无论如何,如果没有额外的ng-app要删除,这个解决方案并不是特别有用。

我最近的想法是,对于一个空的html页面使用root并使用我的布局来渲染ng-view而不是Rails视图,可能会有一些时髦的东西。

有任何想法吗?

编辑:

将正文中的所有内容放入index.html,然后在布局中执行

 = yield 

情况仍然完全相同。

移除turbolinks解决了这个问题。 我曾经认为这很好,因为这是我得到的唯一奇怪的错误,但是猜不是。 我很困惑,为什么它导致了这个问题,所以任何解释,彻底涵盖,我将标记为正确的答案。