gpt4 book ai didi

javascript - 在 sails js 中跨 View 共享通用 Controller

转载 作者:行者123 更新时间:2023-11-30 12:25:30 24 4
gpt4 key购买 nike

我想在我的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com