【问题标题】:How can I add a "clicked" condition in knockout.js css-binding?如何在 knockout.js css-binding 中添加“点击”条件?
【发布时间】:2017-10-30 03:45:34
【问题描述】:

knockout.js中css-binding的文档提供了一个示例如下:

<div data-bind="css: { profitWarning: currentProfit() < 0 }">
   Profit Information
</div>

  <script type="text/javascript">
   var viewModel = {
    currentProfit: ko.observable(150000) // Positive value, so initially we don't apply the "profitWarning" class
};
   viewModel.currentProfit(-50); // Causes the "profitWarning" class to be applied
</script>

这个例子似乎应用了“profitWarning” currentProfit 是负数。我想稍微改变一下,并在单击 div 时应用此类。如何将“单击”条件应用于此示例?另外,我想制作多个 div 并一次只应用一个样式(单击 div 时应用样式,单击另一个 div 时将其删除)

谢谢

【问题讨论】:

    标签: javascript html css knockout.js


    【解决方案1】:

    您可以使用点击绑定。

    click 绑定添加了一个事件处理程序,以便在单击关联的 DOM 元素时调用您选择的 JavaScript 函数。这最常用于按钮、输入和 a 等元素,但实际上适用于任何可见的 DOM 元素

    http://knockoutjs.com/documentation/click-binding.html

    这是一个例子:

    function viewModel() {
      var self = this;
      self.isSelected = ko.observable(false);
      self.className = ko.pureComputed(function(){
        return self.isSelected()? "SelectedClass" : "NotSelectedClass";
      }, self);
      self.change = function() {
        self.isSelected(!self.isSelected());
      }
    }
    
    ko.applyBindings(new viewModel()); 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
    
    <div data-bind="text: className"></div> <br/>
    <div data-bind="css: className">Inspect this Div</div> <br/>
    <input type="button" data-bind="click: change" value="Toggle" />

    对于您的第二个问题,您可以为每个 div 提供几个布尔值以检查单击了哪个,将用户单击的设置为 true,然后将其余设置为 false。

    【讨论】:

    • 非常感谢!我还有一个问题。是否可以在单击时更改文本的颜色,并在单击另一个文本时仅通过使用 css-binding 更改回其原始颜色? (不是点击绑定)
    • 两者都必须使用,必须使用点击绑定来触发点击事件,并且必须使用css绑定来相应地更改css className。你不能只使用css,因为你将无法触发点击事件。
    猜你喜欢
    • 2017-10-29
    • 2017-10-31
    • 1970-01-01
    • 2017-11-02
    • 2013-10-27
    • 2012-10-09
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多