【问题标题】:Spacebars for HTML ‘disabled’ HTML inputHTML“禁用”HTML输入的空格键
【发布时间】:2021-02-10 03:52:50
【问题描述】:

我正在使用disabled HTML 属性禁用textareas。

<textarea disabled>{{foo}}</textarea>

足够简单。这样就可以使客户端无法进入文本区域并进行更改。但是,我想根据条件创建 disabled。

假设allowed 是一个布尔值。我只想能够做到以下几点。

<textarea {{#unless allowed}} disabled  {{/unless}}>{{foo}}</textarea>

但这会导致模板出错。在 VS Code 中,{{#unless allowed}}disabled{{ 变为蓝色,/unless}} 变为红色。

知道如何做到这一点吗?谢谢!

【问题讨论】:

  • 我不知道 blaze/spacebars,但在快速查看其文档后,似乎它不支持其属性内部的逻辑。

标签: javascript templates meteor meteor-blaze spacebars


【解决方案1】:

这就是你需要使用所谓的attribute helper的地方。

<textarea {{attributes}}>{{foo}}</textarea>
Template.foo.helpers({
  attributes() {
    return {
      disabled: allowed,
    };
  }
});

【讨论】:

  • 所以allowed 实际上是文档上的一个属性。我将Document 传递给辅助方法。但是...我得到cannot read property of undefined。我认为这是因为 Document 在创建模板时不存在(但它会在模板被渲染时存在)。我通过在检查allowed 之前简单地检查Document &amp;&amp; Document._id 的存在来解决这个问题。我只是想知道是否有更好的方法/
  • 是的,没错。无论是分析还是方法。这就是这样做的方法。 “反应性”思考很重要,所以这种方法很好。
猜你喜欢
  • 2015-06-25
  • 2019-06-21
  • 2010-09-27
  • 2013-01-26
  • 1970-01-01
  • 2014-02-14
  • 1970-01-01
  • 2016-11-11
  • 1970-01-01
相关资源
最近更新 更多