将对象传递给sails.js中的views / layout.ejs

时间:2015-04-03 01:38:13

标签: javascript node.js sails.js

我很难尝试将对象传递给项目的布局,以获取我需要在导航栏中显示的类别列表。我一直在尝试这里的几个解决方案,所有关于使用策略和分配res.locals.myVar = someObj,问题是res.locals和使用req.options.locals.myVar仅在控制器操作中可用查看而不是布局

到目前为止我得到了这个。

// getRoomList POLICY

Room.find().exec(function(err, rooms) {
    if (err) {
        return res.badRequest('Something went wrong.');
    }
    if (rooms) {
        res.locals.roomlist = rooms;
        next();
    } else {
        res.notFound();
    }
});

// config / policies

'*': 'getRoomList'

//在layout.ejs

<%= roomlist %>

1 个答案:

答案 0 :(得分:0)

我认为可以使用策略将数据保存到res.locals,但在我的实现中,我将数据保存到请求本身并将其发送到控制器中的视图(对我来说看起来更清晰)

<强>配置/策略/ getCategories

module.exports = function(req, res, next){
  Categories.find().exec(function(err, models) {
      if (err) return res.badRequest("Error");
      req.categories = models;
      next();
  });
}

<强> API /控制器/ ABCController.js

module.exports = {
   index : function(req, res, next){
      res.view('page/index', {
          categories : req.categories
      });
    }
}

<强>配置/ policies.js

ABCController : {
   index: ['getCategories', 'getProfiles']
   // add this policy to any page who needs nav bar categories
}

**配置/ routes.js

'/home/': {
  controller: "ABCController",
  action: "index"
}