【问题标题】:KnockoutJS css binding != trueKnockoutJS css 绑定!= true
【发布时间】:2014-10-14 21:22:49
【问题描述】:

我的视图模型返回一个 true 值,我正在尝试让我的模板相应地添加 CSS。问题是,我找不到 != true 的语法。

我有这样的事情:

<div data-bind="css: {'lw-touched': checked, 'lw-touch': !checked}"></div>

我想说的是,如果选中 === true,则应用“lw-touched”,如果选中 === false,则应用“lw-touch”。但这不起作用:(。所以我尝试了这个:

<div data-bind="css: {'lw-touched': checked, 'lw-touch': checked !== true}"></div>

这也不起作用。

我确信有办法做到这一点!只是暂时找不到。

【问题讨论】:

  • 该死的......刚刚发布并在 30 秒后解决了它。我离开它是因为其他人可能有这个问题... data-bind="css: {'lw-touched': checked, 'lw-touch': checked() !== true}">
  • 将其作为您问题的答案。
  • 其实你可以只用!checked()。每当您否定表达式时,您都需要使用括号获取基础值。

标签: knockout.js


【解决方案1】:

我在 30 秒后发布并解决了它:(。

我要离开它是因为其他人可能会遇到同样的问题。

data-bind="css: {'lw-touched': checked, 'lw-touch': !checked()}">

感谢@MikaelÖstberg,我使用了更好的语法

我将此标记为答案,以免我收到更多负面反馈:/

【讨论】:

  • 如果您强调括号 () 有所作为,那就太好了。没关系,现在我的评论达到了目的! ;)
【解决方案2】:
data-bind="css: isPlaying() ? 'play' : 'pause'"

考虑在绑定字段中添加 ()

【讨论】:

  • 应用这个之后我得到了一些奇怪的东西:class='0 1 2 3' 表示播放值,class='0 1 2 3 4' 表示暂停值。似乎淘汰赛采用了 string.length 值而不是 string 作为类属性。有什么想法吗?
【解决方案3】:

感谢g.breeze,感谢您的回答。我一直没有成功尝试在 css 属性上使用三元运算符,但从不知道它可以在没有花括号的情况下设置。一本用于书籍!

data-bind="css: ifThisExpressionIsTrue() ? 'applyThisClass andAnother' : 'elseThisClass'"

你用你的宝贵答案碰到了一个两年前的话题。

【讨论】:

    猜你喜欢
    • 2015-12-19
    • 2015-05-27
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 2012-01-18
    相关资源
    最近更新 更多