gpt4 book ai didi

javascript - 使用 knockout css 绑定(bind)动态绑定(bind)多个类(类的名称将来自一些可观察变量)

转载 作者:行者123 更新时间:2023-11-27 23:29:29 26 4
gpt4 key购买 nike

我正在尝试使用 knockout 的 css 绑定(bind),将多个类绑定(bind)到一个元素。我知道的一些类名和那些将根据某些条件(工作正常)进行绑定(bind)。当我尝试绑定(bind)一个可观察变量(它将根据某些条件返回我的类名)时出现问题。

这是我尝试过的

function vm()
{
this.st = ko.observable();

var data = true;
var self = this;
this.st(data);

this.divColor = ko.pureComputed(function()
{
if(data == true)
{
return 'yellow';
}
else
{
return 'green';
}

});

}
.div1
{
height : 40px;
width : 50px;
border : 1px solid black;
}

.disable
{
border : 1px solid red;
}

.yellow

{
background-color : yellow;
}
.green
{
background-color : green;
}
<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 class = "div1" data-bind="css : {'disable' : ( st() == 1) , divColor : true'}">
</div>

我也试过了

<div class = "div1" data-bind="css :divColor , css : {'disable' : ( st() == 1)}">
</div>

但是这些都没有将“divColor”返回的类应用于元素。第一种方法是将“divColor”作为类添加到 div 元素。

以前有没有人尝试过这样的事情?

我不想根据条件从 js 生成类并绑定(bind)它,因为根据条件在不同类的多个地方使用相同的“divColor”。

最佳答案

我想到的实现您想要的唯一方法是为 css 绑定(bind)构建整个字符串值,以及元素将具有的所有类(检查代码片段)。请注意,您还需要包括静态类(如 div1,否则它们将被绑定(bind)值覆盖)。

function vm() {
var self = this,
data = true;
self.st = ko.observable(data);

self.divColor = ko.pureComputed(function() {
if(self.st() == true){
return 'yellow';
}
else {
return 'green';
}
});
}

ko.applyBindings(new vm());
.div1
{
height : 40px;
width : 50px;
border : 1px solid black;
}

.disable
{
border : 1px solid red;
}

.yellow
{
background-color : yellow;
}
.green
{
background-color : green;
}
<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="css: (st ? 'disable ' : '') + divColor() + ' div1'"></div>

关于javascript - 使用 knockout css 绑定(bind)动态绑定(bind)多个类(类的名称将来自一些可观察变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36639221/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com