【发布时间】:2014-05-22 08:31:19
【问题描述】:
是否有任何 Sails.js(或 Node)配置可以阻止 Angular 路由工作?
无论我采取什么方法,除了sails'routes.js 中的路由之外的每一个路由都返回404。
我已经尝试了 1.2 和 1.3 Angular 版本,并且我使用的是 Sails v 0.9.15。
所有脚本都以正确的顺序加载(例如):
<script src="/linker/js/libs/angular/angular.js"></script>
<script src="/linker/js/libs/angular/angular-resource.js"></script>
<script src="/linker/js/libs/angular/angular-route.js"></script>
<script src="/linker/js/libs/angular/angular-sanitize.js"></script>
...
<script src="/linker/js/app.js"></script>
我正在正确使用 ngRoute:
var myApp= angular.module('myApp', ['ngRoute']);
这是我在 Angular 的 app.js 中的路线:
myApp.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/profile',
{ templateUrl: 'linker/views/profile.html', controller: 'MainCtrl' })
.when('/profile-detail',
{ templateUrl: 'linker/views/profile_detail.html', controller: 'MainCtrl' });
}]);
而且我也在使用位置提供程序:
myApp.config(function ($locationProvider) {
$locationProvider.html5Mode(true);
});
其他细节:
ng-app 和 ng-view 放置正确,我的路径是正确的。我可以使用 Angular 正确显示 profile.html(还可以包含来自 Sails 的 Restful API 的数据)。
问题是,我只能对 Sails 的 routes.js 中定义的路线执行此操作。
例子:
module.exports.routes = {
'/' : {
controller: 'main',
action: 'index'
},
'/signup' : {
controller: 'main',
action: 'signup'
},
'/login' : {
controller: 'main',
action: 'login'
},
'/profile': {
controller: 'users',
action: 'profile'
} //......
所以基本上,为了使用 Angular 显示一些 html 内容,我必须在 Sails 的配置中定义完全相同的路由,这没有任何意义。
有什么想法吗?附言如果需要,我会提供更多数据。
【问题讨论】:
标签: node.js angularjs sails.js