Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用敲除css绑定动态绑定多个类(类的名称将来自某个可观察的变量)_Javascript_Html_Css_Knockout.js - Fatal编程技术网

Javascript 使用敲除css绑定动态绑定多个类(类的名称将来自某个可观察的变量)

Javascript 使用敲除css绑定动态绑定多个类(类的名称将来自某个可观察的变量),javascript,html,css,knockout.js,Javascript,Html,Css,Knockout.js,我试图使用knockout的css绑定,将多个类绑定到一个元素。我知道一些类名,这些类名将根据某些条件进行绑定(这很好)。当我尝试绑定一个可观察变量(根据某些条件将返回我的类名)时,问题就出现了 这是我试过的 函数vm() { this.st=ko.observable(); var数据=真; var self=这个; 这是st(数据); this.divColor=ko.pureComputed(函数() { 如果(数据==true) { 返回“黄色”; } 其他的 { 返回“绿色”; }

我试图使用knockout的css绑定,将多个类绑定到一个元素。我知道一些类名,这些类名将根据某些条件进行绑定(这很好)。当我尝试绑定一个可观察变量(根据某些条件将返回我的类名)时,问题就出现了

这是我试过的

函数vm()
{
this.st=ko.observable();
var数据=真;
var self=这个;
这是st(数据);
this.divColor=ko.pureComputed(函数()
{
如果(数据==true)
{
返回“黄色”;
}
其他的
{
返回“绿色”;
}
});
}
.div1
{
高度:40px;
宽度:50px;
边框:1px纯黑;
}
使残废
{
边框:1px纯红;
}
黄先生
{
背景颜色:黄色;
}
绿色
{
背景颜色:绿色;
}

要应用多个带敲除的css类,您需要在对象文本中分别指定每个css类及其自己的条件,或者根据您指定的各种条件,使用计算或纯可观察返回需要应用的类

函数vm(){
var数据=真;
var self=这个;
self.st=ko.observable();
self.st(数据);
self.divColor=ko.pureComputed(函数(){
if(self.st()==true){
返回“黄色禁用”;
}否则{
返回“绿色”;
}
});
}
应用绑定(新vm())
.div1{
高度:40px;
宽度:50px;
边框:1px纯黑;
}
.禁用{
边框:1px纯红;
}
黄先生{
背景颜色:黄色;
}
格林先生{
背景颜色:绿色;
}


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

函数vm(){
var self=这个,
数据=真;
self.st=ko.可观察(数据);
self.divColor=ko.pureComputed(函数(){
if(self.st()==true){
返回“黄色”;
}
否则{
返回“绿色”;
}
});
}
应用绑定(新vm())
.div1
{
高度:40px;
宽度:50px;
边框:1px纯黑;
}
使残废
{
边框:1px纯红;
}
黄先生
{
背景颜色:黄色;
}
绿色
{ 
背景颜色:绿色;
}


我只想用击倒法。有没有可能不用从js@Nathan生成类就可以做到这一点?你说的“只敲除”是什么意思?最后都是JavaScript。只是要小心,你的html不会因为添加淘汰视图配置而变得太混乱,以至于很难理解。有时,在剔除视图模型中加入大量视图状态是值得的,因为它使html更容易阅读和理解,并测试JavaScript的逻辑。我同意,如果所有条件和类都在html中添加css绑定,它会使html更难理解。如果有很多类需要绑定,条件很长,那么我们应该按照您给出的答案进行绑定。如果只有2或3个类,我认为可以直接在HTML中添加它,并使用剔除css绑定@纳塔纳利德。一如往常,这要归结为坚如磐石的答案“这取决于”8-)谢谢@elbecita这是我一直在寻找的解决方案。