我尝试在Jade视图中的段落标记之间提取文本,但它不起作用。
我的主题:
<p> My content. </p> <img src="https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcTJ9ylGJ4SDyl49VGh9Q9an2vruuMip-VIIEG38DgGM3GvxEi_H"> <p> Second sentence. </p>
玉观点:
- var content = post.content.slice('/<p>(.*?)<\/p>/g');
p #{content}
结果:
<
答案 0 :(得分:1)
为什么你需要在服务器端的段落标记之间提取文本??
这将是我们在客户端js上做的事情
在您的情况下,context
应该是您传递给玉视图的参数,res.render('view', {context : "My content."})
或res.locals
这样您就可以在Jade视图中处理#{context}
如果你想在Jade视图中声明变量context
它应该像
-var context =“我的内容。”
p#{content}
jsdom
代码代码
posts[i]
未定义。
我想你想迭代帖子,所以你应该在这里使用iterator
您可以在此使用async
模块
在这种情况下,map
非常合适
在此处查看文档 - &gt; async map
Creation.findAll({where: "state = 1",order: 'id DESC', limit: 2}).success(function(creations) {
Post.findAll({where: "state = 1",order: 'id DESC', limit: 2}).success(function(posts){
async.map(posts, function(postEntity, callback){
jsdom.env(
postEntity.content,
["http://code.jquery.com/jquery.js"],
function(errors, window) {
//deal with errors
if(errors) return callback(errors);
postEntity.content = window.$("p").text();
callback(null, postEntity);
}
);
}, function(err, transformedPosts){
if(err) return callback(err);
res.render('index', {
creations: creations,
posts: transformedPosts,
title: "Anthony Cluse | Portfolio"
});
});
});
});
仅供参考,您应该使用控制流库来管理您的回调代码
否则,维护真的很难
我建议async
答案 1 :(得分:0)
var i = 0;
Creation.findAll({where: "state = 1",order: 'id DESC', limit: 2}).success( function(creations) {
Post.findAll({where: "state = 1",order: 'id DESC', limit: 2}).success(function(posts){
console.log(posts[i].content);
jsdom.env(
posts[i].content,
["http://code.jquery.com/jquery.js"],
function(errors, window) {
posts[i].content = window.$("p").text();
}
);
i++;
res.render('index', {
creations: creations,
posts: posts,
title: "Anthony Cluse | Portfolio"
});
});
});