我想在我的 routes.js
文件中进行以下设置
'/first': {
controller: 'PageController',
action: 'viewPage',
page: 'first'
},
'/another': {
controller: 'PageController',
action: 'viewPage',
page: 'another'
},
'/last': {
controller: 'PageController',
action: 'viewPage',
page: 'last'
},
所以有一组通用页面可以共享同一个 Controller - 没有必要让这些页面都有一个唯一的 Controller ,因为它们会做同样的事情,只是加载不同的 View 并从模型加载不同的数据取决于请求的页面。
因此,我需要将 'page'
之类的变量从路由提供程序传递到 PageController
,然后我可以在 PageController.viewPage
中对其进行操作>。 (我意识到上述路由文件中的 'page'
变量无效,它只是为了展示我想要实现的目标。)
我怎样才能实现这样的目标?
最佳答案
你可以在路由上发送一个参数:
'/first/:page': {
controller: 'PageController',
action: 'viewPage',
page: 'first'
},
'/another/:page': {
controller: 'PageController',
action: 'viewPage',
page: 'another'
},
'/last/:page': {
controller: 'PageController',
action: 'viewPage',
page: 'last'
},
在你的 Controller 中:
var page = req.param('page');
res.view('index/' + page, { // Where page is the page parameter and name of your page.
stuff: stuff
});
现在您可以像这样调用端点页面:
/first/page1
/另一个/page2
/last/page3
编辑
您还可以将您的页面连同 slug 名称一起存储在数据库中,然后执行如下操作:
'/:slug': {
Controller :'页面 Controller ',
Action :'viewPage',
},
然后使用 req.param('slug');
从数据库中查询页面数据,为 View 加载正确的数据。
如果它的多层路由你可以使用
/*
然后 req.route
将包含您的查找。
关于javascript - 在 sails js 中跨 View 共享通用 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29539762/