当前位置: 首页 > 面试题库 >

在将数组传递给Node.js中的Jade模板时遇到问题

慕阳文
2023-03-14
问题内容

我正在尝试传递新闻数组以在屏幕上显示,但是我不知何故在浏览器中得到了空数组

路由/rss.js

...
var news = [];
...
          var this_news = { 
            'title': item.title,
            'description': item.description
          }   
          news.push(this_news);
...
  res.render('rss', { 
    title: 'Node.js based RSS reader',
    newsi: JSON.stringify(news)
  });

views / rss.jade

extends layout

block content
  h1= title
  p Welcome to #{title}
  p Sure why not 
  script(type='text/javascript').
    var inews = !{newsi};

编辑

好了,我得出的结论是问题在于我的“非回调逻辑”

那是我的代码:

var FeedParser = require(__dirname + '/../node_modules/feedparser')
  , request = require(__dirname + '/../node_modules/request');

exports.news = function(req, res){

  var news = []; 
    request('http://feeds.feedburner.com/niebezpiecznik/')
    .pipe(new FeedParser())
      .on('error', function(error) {
        //...
      })  
      .on('meta', function (meta) {
        console.log('===== %s =====', meta.title);
        console.log('**** %s ****', meta.description);
        console.log();
      })  
      .on('readable', function() {
        var stream = this, item;
        while (item = stream.read()) {

          var this_news = { 
            'title': item.title,
            'description': item.description
          }   
          news.push(this_news);

        }   
        res.render('rss', { 
          title: 'Node.js based RSS reader',
          newsi: JSON.stringify(news)
        }); 
    });

};

它几乎可以工作,但是却让我无法处理异常。我该如何处理?


问题答案:

您可以将其作为数组传递,渲染时无需将其字符串化。然后,在玉的一面,如果您只想循环通过,就可以使用&每个。

为了使它作为对象传递给script尽管您使用带有单引号的感叹号,然后解析您的对象以便可以使用它。如果您要将其作为对象传递给脚本,但是不使用Jade的内置迭代,则需要对进行字符串化rss.js

路由/rss.js

...
var news = [];
...
          var this_news = { 
            'title': item.title,
            'description': item.description
          }   
          news.push(this_news);
...
  res.render('rss', { 
    title: 'Node.js based RSS reader',
    newsi: JSON.stringify(news)
  });

views / rss.jade

extends layout

block content
  h1= title
  p Welcome to #{title}
  p Sure why not
  script(type='text/javascript').
    // Pass as regular array here
    var inews = JSON.parse('!{newsi}');
    console.log(inews);


 类似资料:
  • 问题内容: 我的node.js项目有一个Jade模板。我想将一个对象发送到jade模板,并将其传递给页面内的一个函数(以呈现某些内容)。 我确定我是从服务器这样发送正确的东西 在客户端中,我这样做: 因此,在脚本函数内部,我想调用一个函数,该函数使用在服务器端创建的json创建可视化。 问题是渲染时我有类似的东西。我还尝试发送JSON的字符串化版本,但是当我这样做时会抱怨。 我发送的json始终是

  • 我知道接受参数和,所以我已经尝试了2次(失败)来包装函数和args...: a.创建一个C样式的函数,该函数将调用传递给它的对象: 这会在GCC 4.8.5中导致以下错误: /usr/include/c++/4.8.2/functional:在'struct std::_bind_simple(std::_placeholder<1>,int))(int*)>>()>'的实例化中:/usr/inc

  • 问题内容: 我有一个用express编写的node.js服务器,并在某个时刻将一个数组发送到某个.jade页面。问题在于,渲染Jade页面时,Jade编译器将数组呈现为,而Chrome上的JavaScript编译器则抱怨说“意外标识符”。 这是Jade代码: 如您所见,这确实很简单,我只是将由node.js传递给Jade 的变量内所给的信息填充到div中。第二行的警报不会触发,因为一旦我尝试分配变

  • 问题内容: 尝试访问传递给模板的函数时出现错误: 有人可以让我知道我在做什么错吗? 模板文件(struct.tpl): 调用文件: 这是用于生成struct样板代码的程序(以防万一有人想知道为什么我要在模板中这样做)。 问题答案: 自定义函数需要在解析模板之前进行注册,否则解析器将无法分辨标识符是否为有效的函数名。模板被设计为可静态分析的,这是必需的。 您可以先使用创建一个新的未定义模板,并且除了

  • 问题内容: 我的类型为: 使用类型数组作为输入参数进行一些处理的过程如下: 最后,我查询该过程为: 在pgadmin中一切正常。稍后,当我尝试使用 Hibernate本机SQL查询Ka Boom 调用相同的代码时 !!! 显示以下内容: 最后一个问题:既与做同样的工作吗? 问题答案: 使用 数组文字 ( 数组的 文本表示形式),因为数组构造函数必须由Postgres求值: 甚至没有显式的强制转换:

  • 问题内容: 我正在尝试通过构建CMS了解有关Flask的更多信息。我正在使用flask-admin添加帖子,图像等。 我设法用ckeditor覆盖textarea 。但是我想将静态文件夹中图像的路径传递给ckeditor图像插件。 我不知道如何将参数传递给我的edit.html模板。 这是代码: 从flask-admin的文档中,我发现可以将参数传递给模板。但是我不知道怎么做。 确切的方法是什么?