【发布时间】:2014-12-28 16:24:11
【问题描述】:
我正在尝试将我的一个 RoR 网页转换为 Angular,以确定是否要将我的所有前端迁移到 Angular。
我遇到的问题是路由 - 似乎由 rails 配置的路由总是“劫持”请求,因此再次加载整个布局,而不仅仅是将模板加载到 ng-view div 中。
我尝试关注一些关于此类迁移的帖子,但这些帖子要么讨论了一个全新的环境(对我来说不是这种情况),要么相互矛盾(或者只是使用非常不同的编码风格,这令人困惑),或者干脆在一切完成之前结束。
到目前为止我所拥有的:
主要的 Angular 文件
@dashboard = angular.module('dashboard',['dashboardServices','ngSanitize'],
['$routeProvider', '$locationProvider', ($routeProvider,
$locationProvider) ->
$locationProvider.html5Mode(true)
$routeProvider.when('/', {
templateUrl: "/app/views/dashboard/promote.html.haml",
controller: 'PromoteCtrl'
})
]).config(["$httpProvider", ($httpProvider) ->
$httpProvider.defaults.headers.common['X-CSRF-Token'] =
$('meta[name=csrf-token]').attr('content')
])
dashboardServices = angular.module('promoteServices', ['ngResource']).
factory('PromoteInitData', ['$resource', ($resource) ->
$resource('/dashboard-ng/promote-data.json', {}, {
query: { method: 'GET', isArray: true }
create: { method: 'POST' }
})
])
Promote Controller 本身(目前真的什么都没有):
@PromoteCtrl = @dashboard.controller('PromoteCtrl',
['$scope', '$location', 'PromoteInitData'],
$scope, $location, $resource, PromoteInitData) ->
# Nothing at the moment
Rails 路线(应该删除?):
get '/dashboard/promote', :to => 'dashboard#promote', :as => 'promote'
将响应 API 请求的 Rails 控制器设置为“respond_to :json”,每个特定方法都返回一个适当的“respond_with”语句,但这无关紧要,因为我没有询问 Angular 和Rails (yet :) ) 而是动态模板加载。
Rails 布局在 html 标记中配置了 ng-app,我在 ng-view div 之后立即生成内容。
有什么线索吗?我显然错过了一些重要的东西。
【问题讨论】:
标签: ruby-on-rails angularjs rails-routing angularjs-routing