作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 ViewModel 中,我有以下方法根据 pState
向我返回 css 类:
function MyViewModel()
{
var self = this;
self.GetClass = function(pState)
{
var lCssClass;
switch(pState)
{
case "warning":
lCssClass = 'bg-yellow';
break;
case "red":
lCssClass = 'font-red';
break;
default:
lCssClass = 'font-default';
break;
}
return lCssClass;
};
}
我想在我的 View 中添加类:
<span class="list-item" data-bind="attr : { class : $root.GetClass('warning')}">This is a warning.</span>
我的问题:现有类 list-item
将被覆盖。
这是一个 fiddle :http://jsfiddle.net/d8L6v9h7/
最佳答案
css
binding将保留现有的类。使用它,例如像这样:
function MyViewModel()
{
var self = this;
self.GetClass = function(pState)
{
var lCssClass;
switch(pState)
{
case "warning":
lCssClass = 'bg-yellow';
break;
case "red":
lCssClass = 'font-red';
break;
default:
lCssClass = 'font-default';
break;
}
return lCssClass;
};
}
ko.applyBindings(new MyViewModel());
.list-item:before { content: ' ✓ '; } /* Just to prove it's preserved. */
.bg-yellow { background-color: yellow; }
.font-red { color: red; }
.font-default { }
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<span class="list-item" data-bind="css: $root.GetClass('warning')">This is a warning.</span>
这是对您问题的“直接”回答。另请查看 @Progrindis answer甚至考虑在反转代码工作方式方面更进一步。
附言。如果您想要一个更“直截了当”的解决方案,例如当您正在创建一个快速模型并且不关心解决方案的整洁性时,您还可以求助于:
<span data-bind="attr: { class: 'list-item ' + $root.GetClass('warning') }">
关于javascript - 如何在 knockout.js 中添加由 javascript 方法生成的 css 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29913980/
我是一名优秀的程序员,十分优秀!