在sails js中跨视图共享一个通用控制器
我想在我的routes.js
文件中进行以下设置
'/first': { controller: 'PageController', action: 'viewPage', page: 'first' }, '/another': { controller: 'PageController', action: 'viewPage', page: 'another' }, '/last': { controller: 'PageController', action: 'viewPage', page: 'last' },
所以有一组通用的页面可以共享同一个控制器 – 不需要这些控制器都拥有唯一的控制器,因为他们可以做同样的事情,只需加载不同的视图并从依赖于模型的模型中加载不同的数据请求页面。
因此,我需要从路由提供者传递一个类似'page'
的variables给PageController
,然后我可以在PageController.viewPage
。 (我意识到在上面的路线文件中的'page'
variables是无效的,这只是为了显示我想达到什么。)
我怎么能做到这样的事情?
你可以通过路由发送一个参数:
'/first/:page': { controller: 'PageController', action: 'viewPage', page: 'first' }, '/another/:page': { controller: 'PageController', action: 'viewPage', page: 'another' }, '/last/:page': { controller: 'PageController', action: 'viewPage', page: 'last' },
在你的控制器中:
var page = req.param('page'); res.view('index/' + page, { // Where page is the page parameter and name of your page. stuff: stuff });
现在你可以像这样调用你的terminal页面:
/首/第1页
/另一/第2页
/最后的/第3页
编辑
你也可以将你的页面与一个slu name名称一起存储在数据库中,并执行如下操作:
'/:slug': { controller: 'PageController', action: 'viewPage', },
然后使用req.param('slug');
从数据库查询您的页面数据以加载视图的正确数据。
如果它的多层路线,你可以使用
/*
,然后req.route
将包含您的查询。