javascript - knockout.js 将样式应用于下拉选项

标签 javascript knockout.js knockout-2.0

我正在使用 knockout.js 编写下拉列表:

views() 是使用 REST 通过 JSON 实例化的对象数组。 displayName 是这些对象的 String 属性,不可观察。我想比较 displayName 属性,如果它匹配某个词,我想对该选项应用一些样式。

<select id="views" data-bind="
    options: views(),
    optionsText: 'displayName',
    optionsValues: 'id',
    value: selectedView,
    style: { color: ( displayName == 'some arbitrary text') ? 'red' : 'black' }
 "></select>

当我不向下拉列表添加样式绑定(bind)时,它会按预期工作。我可以做一个简单的比较(即 1 == 1)并且它有效(尽管所有选项都变成红色)。我想要做的是将“displayName”属性与一些任意文本进行比较。它现在只是一个字符串,包含任何文本,但稍后将从我的 ViewModel 调用此字符串。

如果我的 View 模型需要,这将允许我以不同的样式设置某些选项。有什么想法吗?

最佳答案

我的解决方案是使用 optionsAfterRender 回调:

<select id="views" data-bind="
                         options: views(),
                         optionsText: 'displayName',
                         optionsValue: 'id',
                         value: selectedView,
                         optionsAfterRender: optionsAfterRender
                      "></select>

然后在我的模型中:

self.optionsAfterRender = function(option, view) {
            if (view.defaultView) {
                option.className = 'defaultViewHighlight';
            }
        };

关于javascript - knockout.js 将样式应用于下拉选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17703328/

相关文章:

javascript - 如何在 Mocha 中使用 console.log 语句测试功能?

javascript - 在 Three.js 场景中使用 div 和 canvas 元素有什么区别?

javascript - 在 Knockout 订阅中设置 Breeze 导航属性

javascript - 将 Knockout js json 转换为可观察的

select - 选择列表初始化时 knockout 触发更改事件

javascript - typescript 错误 - 找不到名称 'require'

javascript - knockout 验证忽略输入字段的错误AsTitle 配置

javascript - 如何在knockoutjs中绑定(bind)嵌套选项

javascript - knockout ,CSS 动态和条件绑定(bind)

javascript - 如何使用 AJAX 从不同的页面获取 div 的 html?