当用户刷新页面时,我的角度路线出现问题,或直接访问浏览器中的链接(而不是遍历网站中的链接)。
thing.js - 角度工厂
.factory( 'Things', ['$resource', function ( $resource ) {
return $resource('/api/things/:name', {
name: '@name'
}, {
update: {
method: 'PUT',
isArray: true
},
get: {
method: 'GET',
isArray: true
}
});
}])
app.js - 角度路线
.config( function ( $routeProvider, $locationProvider, $httpProvider ) {
$locationProvider.html5Mode(true);
$routeProvider
.when('/', {
templateUrl: 'thing/view',
controller: 'ThingCtrl'
});
routes.js - 表达路线
app.route( '/api/thing/:name' )
.get( things.all )
.put( things.update );
app.route( '/things/*' )
.get( index.partials );
app.param( 'name', things.load );
index.js - 表达控制器
exports.partials = function( req, res ) {
var stripped = req.url.split('.')[0];
var requestedView = path.join('./', stripped);
res.render( requestedView, function( err, html ) {
if( err ) {
console.log( "Error rendering partial '" + requestedView + "'\n", err );
res.status( 404 );
res.send( 404 );
} else {
res.send( html );
}
});
};
错误消息
Error rendering partial 'things/nameOfThing'
{ [Error: Failed to lookup view "things/nameOfThing" in views directory "/Users/johnsmith/projects/theProject/app/views"]
view:
{ name: 'things/nameOfThing',
root: '/Users/johnsmith/projects/theProject/app/views',
defaultEngine: 'html',
ext: '.html',
engine: [Function],
path: undefined } }
我希望刷新使用thing / view.html模板,但它似乎想要使用传递的参数。
答案 0 :(得分:1)
如果我正确理解您的问题,您必须在 app config 中为位置提供商启用html5模式,如下所示
$locationProvider.html5Mode(true);
将应用程序的基本路径设置为' /'。
您可以将其更改为false以使用基于散列的位置。
$locationProvider.html5Mode(false);