我select
通过 KnockoutJS 视图模型填充了 HTML 元素,如下所示:
<select data-bind="options: $data.answers, optionsText: function(item) { return item.text }, value: selectedAnswer, optionsCaption: 'Choose...'"></select>
我想做的是通过某种方式设置class
每个元素的属性option
,所以我最终得到:
<option class="someValue">12345</option>
这可以在 KnockoutJS 中完成吗?我很难找到解决方案。
编辑:
我刚刚foreach
按照 Artem 的建议尝试了绑定,它非常接近我想要的工作。但是有一个问题。
在Question
对象上有一个订阅SelectedAnswer
observable 的函数:
this.selectedAnswer.subscribe(function (answer) {}
当我使用foreach
绑定subscribe()
时,每个问题都会触发一次(在我选择答案之前它不应该触发。我认为这是因为“选择...”选项现在没有显示)。
对于foreach
绑定,如何将默认文本设置回“选择...”并停止selectedAnswer.subscribe()
触发,直到用户选择了一个项目,而不是在填充列表时。
编辑:
好的,这就是我的做法。
在 KO viewmodel 类中,我有一个布尔值bindingFinished
,我在selectedAnswer.subscribe()
. 如果false
那么我们只是从函数中返回;如果为真,则照常进行。
Answer
此外,我通过在数组的开头添加一个新选项来为答案添加一个默认的“选择”选项。最终的结果是,在数据被绑定的时候,订阅函数没有被执行,只有在用户选择了一个选项之后。
非常感谢 Artem 的帮助。