【问题标题】:Meteor blaze template access object property by key without helperMeteor blaze 模板在没有助手的情况下通过键访问对象属性
【发布时间】:2018-05-27 17:36:02
【问题描述】:

我想知道是否可以通过属性字符串来实现对象访问

const obj = { foo:"bar" }
obj["foo"] // returns "bar"

通过 Blaze 空格键(因此,不使用辅助函数)。

我尝试了类似的东西

{{#with obj}}
  {{this['foo']}}
{{/with}}

但它似乎不接受方括号。注意:我不能只输入

{{this.foo}}

因为属性名称是由另一个对象作为值动态给出的。

【问题讨论】:

  • 没有助手是不可能的

标签: javascript meteor meteor-blaze spacebars


【解决方案1】:

一个返回键的辅助函数和另一个接收对象和键并返回值的辅助函数怎么样?

// JS
Template.registerHelper('keys', function keys (object) {
  return Object.keys(object);
});
Template.registerHelper('pick', function pick (key, object) {
  return object[key];
});

// html
<template name="foo">
  {{#each key in (keys obj)}}
    {{key}} - {{pick key obj}}
  {{/each}}
</template>

编辑:刚刚注意到您的标题非常明确地说“没有帮助”。我认为没有帮助者这是不可能的

【讨论】:

  • 我也认为 global helper 是实现这一目标的最佳方式
  • 是的,出于这个原因,我在示例中使用了全局助手!非常可重复使用的功能
  • 我接受它作为最佳答案,因为确实没有办法做到这一点,尽管你描述了一个。
猜你喜欢
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-12
  • 2015-09-22
  • 1970-01-01
  • 2017-07-02
  • 1970-01-01
相关资源
最近更新 更多