【问题标题】:Cannot access object properties in handlebars partial无法访问车把部分中的对象属性
【发布时间】:2020-09-27 02:49:51
【问题描述】:

我正在开发 nodejs 应用程序。并想在网页中显示 Mongoose 结果。模板引擎是快递车把。

   data=  [
              {name: 'some name', image: '/some_name.jpg', location: 'some location'},
              {name: 'some name2', image: '/some_name2.jpg', location: 'some location2'},
              {name: 'some name3', image: '/some_name3.jpg', location: 'some location3'}
           ]

我想在车把部分呈现数据。起初,我使用#each 迭代每个对象并将该对象传递给部分对象。下面是我正在做的代码。

{{#each data}}
   {{> somePartial this}} 
{{/each}}

somePartial我想访问对象的属性。

 <h5>Name: {{this.name}}</h5>
 <h5>Image: {{this.image}}</h5>
 <h5>Location: {{this.location}}</h5>

我在浏览器中看不到任何值呈现。在服务器控制台中,我收到一些警告或类似Handlebars: Access has been denied to resolve the property 'xxxx' because it is not 'own property' of its parent.

【问题讨论】:

  • 不应该是{{#each data}}吗?
  • 我忘记放在那里.. 现在看看

标签: node.js express handlebars.js partials express-handlebars


【解决方案1】:

不使用这个

{{> somePartial}} 

...

<h5>Name: {{name}}</h5>

更多信息在这里:https://handlebarsjs.com/guide/partials.html#partial-parameters

【讨论】:

    【解决方案2】:

    解决Handlebars:访问已被拒绝解析属性“xxxx”,因为它不是其父级的“自己的属性”。

    将结果数组映射到新数组中。

    let result2 = result.map(val=>{
      return {field1: val.field1,field2: val.field2, field3: val.field3 and so on}
    })
    

    出于安全原因,车把不允许直接传递获取的结果。您需要使用必填字段进行映射,以免传递敏感数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-05
      • 2016-09-04
      相关资源
      最近更新 更多