Javascript 使用Rails 4.2的AngularJS-如何使$routeProvider.when()正常工作?
我正在使用Rails 4.2和gems。当我第一次转到主页(index.html)并尝试单击“#/kiteboards/{{kiteboard.id}}}/users”时,浏览器栏中会出现哈希URL,例如“”,但是没有加载users.html.haml模板(由angular rails模板提供) 这应该是一个简单的路由问题……是AngularJS路由代码错了吗?还是别的什么?Chrome开发工具控制台中没有出现JS错误消息,因此看起来AngularJS连接正确,但可能在路由中的某个地方缺少“/” AngularJS代码片段Javascript 使用Rails 4.2的AngularJS-如何使$routeProvider.when()正常工作?,javascript,ruby-on-rails,ruby,angularjs,Javascript,Ruby On Rails,Ruby,Angularjs,我正在使用Rails 4.2和gems。当我第一次转到主页(index.html)并尝试单击“#/kiteboards/{{kiteboard.id}}}/users”时,浏览器栏中会出现哈希URL,例如“”,但是没有加载users.html.haml模板(由angular rails模板提供) 这应该是一个简单的路由问题……是AngularJS路由代码错了吗?还是别的什么?Chrome开发工具控制台中没有出现JS错误消息,因此看起来AngularJS连接正确,但可能在路由中的某个地方缺少“/”
var kiteApp = angular.module('kiteApp', ['ngResource', 'ngRoute', 'templates']);
kiteApp.controller('kiteCtr', ['$scope', 'KiteboardApi', kiteCtr]);
kiteApp.factory('KiteboardApi', ['$resource', KiteboardApi]);
kiteApp.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/kiteboards/:kiteboard_id/users', {
templateUrl: 'users.html',
resolve: {
usersData: function(KiteboardAPI) {
return KiteboardAPI.fetchUsers({ kiteboard_id: $route.current.params.kiteboard_id }).$promise.then(function(data) {
return data;
});
}
},
controller: 'kiteCtr'
})
}]);
application.js
//= require jquery
//= require jquery_ujs
//= require angular
//= require angular-resource
//= require angular-route
//= require angular-rails-templates
//= require_tree ../templates
//= require_tree .
%div{"ng-app"=>"kiteApp", "ng-controller"=>"kiteCtr"}
%table
%thead
%tr
%th Index #
%th Name
%tbody
%tr{"ng-repeat" => "kiteboard in kiteboards track by $index"}
%td {{$index}}
%td
%a{href: '#/kiteboards/{{kiteboard.id}}/users'} {{kiteboard.name}}
应用程序内/assets/templates/users.html.haml:
%div#section{"ng-app"=>"kiteApp", "ng-controller"=>"kiteCtr"}
%table
%thead
%tr
%th Name
%tbody
%tr{"ng-repeat" => "user in usersData track by $index"}
%td
主页,index.html,由Rails加载
//= require jquery
//= require jquery_ujs
//= require angular
//= require angular-resource
//= require angular-route
//= require angular-rails-templates
//= require_tree ../templates
//= require_tree .
%div{"ng-app"=>"kiteApp", "ng-controller"=>"kiteCtr"}
%table
%thead
%tr
%th Index #
%th Name
%tbody
%tr{"ng-repeat" => "kiteboard in kiteboards track by $index"}
%td {{$index}}
%td
%a{href: '#/kiteboards/{{kiteboard.id}}/users'} {{kiteboard.name}}
在将该值传递给
$resource
:call之前,应在resolveusersData
函数中插入$route
。。它应该是usersData:function(KiteboardAPI,$route)
而不是usersData:function(KiteboardAPI)
,事实证明,这个问题主要与链轮3与角轨模板不兼容以及不使用ng view指令有关。