rails中的Angularjs:更改页面而不重新加载?

时间:2013-10-19 08:21:28

标签: javascript ruby-on-rails angularjs

使用angularjs更改rails中的页面的最佳做法是什么,这样就不会刷新? (我将在切换页面上使用fadein动画)。

除此之外,如果我想在Angularjs中保留数据库查询逻辑,那么有没有办法为Angularjs读取Rails url参数(foo.com/:arg)?

1 个答案:

答案 0 :(得分:1)

如果您正在使用要转换为Angular的现有Rails应用程序,则可能无法从Rails中保留大量模板/视图代码。相反,通过保留服务器端API并静态地为Angular应用程序提供服务来开始清理。如果您从一个干净的rails应用程序开始,请记住,Rails的工作基本上是提供JSON / XML API并静态地提供Angular应用程序。

要在Angular中更改视图而不重新加载页面,您需要与ng-view协同使用$ routeProvider。使用相应的视图模板注册应用程序中的每个路径:

angular.module('user-manager', [])
    .config(function($routeProvider) {
        $routeProvider
            .when('/', {
                templateUrl: 'views/main.html'
            })
            .when('/user/:id', {
                templateUrl: 'views/user.html',
                controller: 'UserCtrl'
            })
            .otherwise({
                redirectTo: '/'
           });
});

然后在主index.html中的某处声明ng-view:

<body ng-app="user-manager">

    <!-- Main view -->
    <div ng-view></div>
</body>

ng-view将替换为路线中的相关模板。有关更多详细信息和更完整的示例,请参阅:http://docs.angularjs.org/api/ngRoute。$ route