簡體   English   中英

在sails js中跨視圖共享通用控制器

[英]Share a generic controller across views in 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'這樣的變量從路由提供程序傳遞給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'
  }, 

在你的控制器中:

 var page = req.param('page');

 res.view('index/' + page, { // Where page is the page parameter and name of your page.
    stuff: stuff
 });

現在您可以像這樣調用端點頁面:

/首/第1頁

/另一/第2頁

/最后的/第3頁

編輯

您還可以將頁面與slug名稱一起存儲在數據庫中,並執行以下操作:

'/:slug': { controller: 'PageController', action: 'viewPage', },

然后使用req.param('slug'); 從數據庫查詢頁面數據以加載視圖的正確數據。

如果您可以使用多層路線

/*然后req.route將包含您的查找。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM