AngularJS和Rails视图需要页面刷新

时间:2014-01-21 14:47:12

标签: ruby-on-rails angularjs coffeescript

我在一些视图中使用了AngularJS的Rails应用程序。每当我点击链接将我带到页面时,请说/certifications我看到了这个

bad reload

然后当我重新加载页面或通过在URL栏中输入来请求它时,它可以正常工作并显示

good reload

重新加载这两个页面的方式是否有所不同,这搞砸了AngularJS。我需要用户和角度路由器或什么?我已将视图和控制器的代码放在下面。谢谢你的帮助!

控制器:

@aquaticsApp = angular.module 'aquaticsApp',
  ['ngResource', 'aquaticsAppFilters']


@aquaticsApp.controller 'CertsCtrl', ['$scope', 'Certs',
  @CertsCtrl = ($scope, Certs) ->
    $scope.formatDate = (dateString)  ->
      d = new Date(dateString)

      curr_month = d.getMonth() + 1
      curr_date = d.getDate()
      curr_year = d.getFullYear()

      "#{curr_month}/#{curr_date}/#{curr_year}"

    $scope.sorter =
      value: 'firstName'

    Certs.get (data) ->
      $scope.certNames = data.certification_names
      $scope.users = data.users
]

查看:

<div ng-app='aquaticsApp' class='table-responsive'>
  <table ng-controller='CertsCtrl' class='table table-hover table-condensed'>
    <thead>
      <tr>
        <th ng-click='sorter.value="lastName"'>Last Name</th>
        <th ng-click='sorter.value="firstName"'>First Name</th>
        <th ng-click='sorter.value="location"'>Location</th>
        <th ng-repeat='certName in certNames' ng-click='sorter.value=certName.name'>
          {{certName.name}}
        </th>
      </tr>
    </thead>
    <tbody>
      <tr ng-repeat='userData in users | orderBy:sorter.value'>
        <td>{{userData.lastName}}</td>
        <td>{{userData.firstName}}</td>
        <td>{{userData.location}}</td>
        <td ng-repeat='certName in certNames' class='{{userData[certName.name + "class"]}}'>
          {{formatDate(userData[certName.name])}}
        </td>
        </td>
      </tr>
    </tbody>
  </table>
</div>

1 个答案:

答案 0 :(得分:3)

JQuery gets loaded only on page refresh in Rails 4 application找到答案。

Turbolinks会停止绑定到文档准备工作的插件。由于我认为我会继续使用turbolinks,所以我使用了上述SO答案中规定的解决方案,并且有效。