【问题标题】:Jade variable attribute namesJade 变量属性名称
【发布时间】:2013-05-20 20:31:28
【问题描述】:

我有一个名为 current 的变量,用于设置 html 输入的 checked

所以current 可以是''(空白)或checked=true

由于你不能将 HTML 属性设置为 false,我不能这样做:

input(checked="#{current}")

所以,我需要使用一个变量作为整个属性。翡翠可以吗?除了在那里写 HTML 字符串

编辑更清楚。我想这样做:

someVar = "checked=true"    
input(somevVar) // <input checked="true">

【问题讨论】:

  • 请看我编辑的答案。你就是这样做的。

标签: node.js express pug


【解决方案1】:

jade supports boolean attributechecked 直接通过这种语法:

input(type="checkbox", checked=current)

来自文档:

还支持布尔属性:

输入(类型=“复选框”,选中)

带有代码的布尔属性只会 为真时输出属性:

input(type="checkbox", checked=someValue)

确保在布局模板中也指定了!doctype 5 指令。

这是一个例子:

var jade = require('jade');

var templateFn = jade.compile('doctype 5\ninput(type="checkbox", checked=current)\n');
console.log(templateFn({current: true}));
console.log(templateFn({current: false}));

它输出:

<!DOCTYPE html><input type="checkbox" checked>
<!DOCTYPE html><input type="checkbox">

【讨论】:

  • 是的,但我想用一个变量来设置整个东西。 HTML 很奇怪,只有缺少属性才会将其设置为 false,我不能简单地将 someValue 设置为 false
  • 是的,我完全理解你的目标。正如我所描述的,我相信玉支持这一点。你试过了吗?
  • 太棒了,正是我想要的。真的是翡翠的一大特色。谢谢!
【解决方案2】:

你可以这样做:

input(type='checkbox', id='IsPublic', name='IsPublic', value= model.IsPublic)

其中 model.IsPublic 来自您在节点中的响应传入的模型。

在上面的示例中,它由 mongodb 支持,其中模型如下所示:

IsPublic: { type: Boolean, default: false}

在上述情况下,有一个属性表示公共的或不是你的将是“当前的”。

注意:不要被“模型”个人混淆,我将所有内容或核心属性作为称为“模型”的对象传递,以保持一致性。在您的情况下,您可能会直接传递属性,所以不要被该部分混淆只是为了澄清。

【讨论】:

  • 我希望 整个属性 是一个变量。更新了我的 Q 以更清晰。
  • @Wes 啊!!!好编辑,没看懂。能问下为什么这样更好理解吗?
  • - if (something) { current = "checked=true";} else {current=""}. HTML 不允许checked=false,否则我只会将该值设置为 false 并继续我的生活。它没有选中的属性一起导致复选框不被选中
  • 嗯好的。好吧,如果您传递一个 true 或 false 道具并将其连接到该值,它将根据该值自动显示检查或不检查。我可以给你看一个活生生的例子。我的意思是,除非您尝试在脚本中操作它或其他东西,否则没有理由在加载时必须在翡翠中使用该 if 语句。我错过了什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 2013-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多