添加创build一个mixin并使用它keystonejs
我正在尝试为keystonejs创build一个jQuery mixin,这里是我在index.jade中提出的
extends ../layouts/default block bodycontent include ../mixins/focus.jade
和mixin玉文件
mixin focus(focus) section#focus.focus div.container div.service-icon= focus.image
这是javascript视图文件
var keystone = require('keystone'), Focus = keystone.list('Focus'); exports = module.exports = function(req, res) { var view = new keystone.View(req, res), locals = res.locals; // Set locals locals.section = 'focus'; locals.data = { }; view.on('init', function(next) { Focus.model.find() .populate('author') .sort('label') .limit(4) .exec(function(err, fields) { // do something with posts locals.data.fields = fields; console.log(fields); next(err); }); }); view.render('focus'); };
当我呈现index.jade文件时,焦点部分丢失。 我错过了什么? 列表模型存在,因为我可以将其保存到数据库中。
与includes不同,你需要在声明之后调用mixins。 他们就像function。
请参阅这里的文档: http : //jade-lang.com/reference/mixins/
然后,假设locals
中有一些数据定义了要重点关注的内容,首先将文件包含在定义了混合的地方,然后调用混合并将数据传递给渲染。
我有点猜测,因为我看不到你的整个项目结构,但是这样的事情可能是你所追求的:
路由处理器
var keystone = require('keystone'), Focus = keystone.list('Focus'); exports = module.exports = function(req, res) { var view = new keystone.View(req, res), locals = res.locals; locals.section = 'focus'; locals.data = {}; view.on('init', function(next) { Focus.model.find() .populate('author') .sort('label') .limit(4) .exec(function(err, results) { locals.data.results = results; next(err); }); }); view.render('focus'); };
混入
mixin focus(focus) section#focus.focus div.container div.service-icon= focus.image
模板
extends ../layouts/default block bodycontent include ../mixins/focus.jade each i in data.results +focus(i)
- 如何加载webpack捆绑包asynchronous,但按顺序执行?
- 当require(“http”)。Server()以Express应用程序作为参数进行评估时,会发生什么情况?
- JavaScriptcallback的翻译工具
- 向节点发送请求返回404
- 如何通过JavaScript下载PDF文件?
- Nodejs 4.x上的ES6代码:V8 4.5是直接运行ES6的原生JS引擎吗?
- JavaScript / Node.js:为什么原型.__ proto__ =原型,而不是新的
- 如何在Node.js中为非常大(> 1GB)的文件的每一行运行一个asynchronous函数
- Node.js服务器端的表单validation与客户端响应