首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加带有css绑定的动态类

添加带有css绑定的动态类
EN

Stack Overflow用户
提问于 2017-07-31 10:02:29
回答 3查看 2.4K关注 0票数 1

我想在payment-method by函数后面添加一个类,并使用剔除的css绑定(在Magento2.1中)。这是当前的代码:

代码语言:javascript
复制
<div class="payment-method" data-bind="css: {'_active': (getCode() == isChecked())}">
    <div class="payment-method-title field choice">
        <input type="radio"
               name="payment[method]"
               class="radio"
               data-bind="attr: {'id': getCode()}, value: getCode(), checked: isChecked, click: selectPaymentMethod, visible: isRadioButtonVisible()"/>

类由getCode()返回,它在上面使用id和值。所以我想我可以这样做:

代码语言:javascript
复制
<div class="payment-method" data-bind="css: {'_active': (getCode() == isChecked()), getCode()}">

但是它失败了,因为:

knockout.js:2624 Uncaught :无法解析绑定。绑定值: css:{'_active':(getCode() == isChecked()),getCode() }消息:意外令牌}

代码语言:javascript
复制
<div class="payment-method" data-bind="css: getCode()">

这个很管用。

代码语言:javascript
复制
<div class="payment-method" data-bind="css: {getCode()}">

这不可能。

代码语言:javascript
复制
<div class="payment-method" data-bind="css: {'_active': (getCode() == isChecked())}, attr: {'class': getCode()}">

这也是可行的,但它将覆盖payment-method类,并且_active类在本质上不再被设置。

如何设置动态类?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-31 11:43:38

@tyler_mitchell的评论帮助我自己通过以下线程找到了解决方案:https://stackoverflow.com/a/21528681/928666

我能做到:

代码语言:javascript
复制
<div class="payment-method" data-bind="attr: { 'class': 'payment-method ' + getCode() }, css: {'_active': (getCode() == isChecked())}">

不聪明但很好..。

票数 0
EN

Stack Overflow用户

发布于 2017-07-31 10:22:49

这段代码是多余的,因为css数据绑定正在被您的attr绑定覆盖。

代码语言:javascript
复制
<div class="payment-method" data-bind="css: {'_active': (getCode() == isChecked())}, attr: {'class': getCode()}">

您可以这样做动态类(假设这些属性是可观察的):

代码语言:javascript
复制
<div class="payment-method" data-bind="css: CSS">

self.CSS = ko.computed(function() {
    var code = self.getCode();
    var isChecked = self.isChecked();
    return code + ' ' + (code == isChecked ? '_active' : '');
}, viewModel);
票数 3
EN

Stack Overflow用户

发布于 2020-06-11 12:32:03

再举一个例子,如果有人需要的话

代码语言:javascript
复制
<div data-bind="attr: { 'class': 'mainClass' + (dynamicClassSetOnce ? ' ' + dynamicClassSetOnce : '' }, css: { 'mainClass--focussed': isFocussed }">
...
</div>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45412839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档