用Foreach代替选项绑定...如何复制“ optionsCaption”功能?

本杰明·保罗

我本周一直在与KnockoutJS一起工作,遇到了一个非常具体的问题,希望其他人在我之前遇到并解决了...

本质上,我绑定了一个选择框,但需要能够对实际的选项标签本身进行控制(例如,禁用),这意味着我无法使用“选项”绑定,这当然不能使您细粒度控制选项标签...这是我想出的(有效!)

<select data-bind="foreach: $root.availableLabels, value: Label, enable: !IsConfirmed(), optionsCaption: 'Please select...'">
    <option data-bind="text: Value, value: $data, css: { 'paired-label': IsPaired }, disable: IsPaired"></option>
</select>

我的问题与“ optionsCaption”有关,因为我使用的是foreach方法来生成内部选项,因此它无法自动运行,就像我能够使用在剔除页面上找到的更简单的“ Options”绑定一样……如果我要迭代的对象具有空的“ Label”值,它将仅显示列表中的第一个对象,而不是我理想中的“ Please Select ...”。

有谁知道解决这个问题的方法吗?我尚未发布视图模型代码,因为我不确定它实际上是否相关,但是如果需要,请问一下!

简而言之,问题是我需要使用foreach,以便可以在选项上设置css / attr绑定,但是仍然需要“未选中”选项。

在此先感谢您的帮助!

网页

标准选项绑定提供了一种后处理绑定的方法。为此,您需要使用optionsAfterRender

您可以在最底部<select>kickout.js选项文档页面上找到完整的示例,专门用于禁用选项

从该页面引用:

如果需要在生成的选项元素上运行其他自定义逻辑,则可以使用optionsAfterRender回调。每次将option元素插入列表时,都会使用以下参数调用回调函数:

  • 插入的选项元素
  • 与其绑定的数据项,或者为caption元素未定义
<select size=3 data-bind="
    options: myItems,
    optionsText: 'name',
    optionsValue: 'id',
    optionsAfterRender: setOptionDisable">
</select>
 
<script type="text/javascript">
    var vm = {
        myItems: [
            { name: 'Item 1', id: 1, disable: ko.observable(false)},
            { name: 'Item 3', id: 3, disable: ko.observable(true)},
            { name: 'Item 4', id: 4, disable: ko.observable(false)}
        ],
        setOptionDisable: function(option, item) {
            ko.applyBindingsToNode(option, {disable: item.disable}, item);
        }
    };
    ko.applyBindings(vm);
</script>

最终,这意味着您必须修改绑定集合以包括可观察的属性,然后可以在后处理功能中引用该属性。如果我正确理解了文档,则更新可观察对象还应该重新运行您的后处理器。

编辑:您也可以使用此

self.setOptionDisable= function(option, item) {
    option.disabled = item.disable()
} 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Foreach 而不是选项绑定 - 复制“optionsCaption”功能?

来自分类Dev

使用optionsCaption时未禁用该选项

来自分类Dev

如何最佳地复制功能

来自分类Dev

用新名称复制功能

来自分类Dev

用C复制文件功能

来自分类Dev

如何使用 CopyFile 功能复制多个文件?

来自分类Dev

如何复制模型浏览器的功能?

来自分类Dev

我如何通过单击预选选项来绑定 jquery 功能

来自分类Dev

用Go语言复制数组的功能

来自分类Dev

复制功能

来自分类Dev

复制功能

来自分类Dev

如何继承功能选项

来自分类Dev

如何复制工作表保护选项?

来自分类Dev

如何复制工作表保护选项?

来自分类Dev

如何使用减少功能代替重复功能?

来自分类Dev

如何在LaTeX中复制波浪号字符的功能?

来自分类Dev

如何构建可复制Java Lambda API中的功能的映射

来自分类Dev

如何在R中复制Ruby的StringScanner的某些功能?

来自分类Dev

Android:如何完全禁用Edittext中的复制和粘贴功能

来自分类Dev

如何克隆/复制保留其功能的元素javascript

来自分类Dev

如何构建可复制Java Lambda API中的功能的映射

来自分类Dev

如何在R中复制Ruby的StringScanner的某些功能?

来自分类Dev

如何在NSViewController中访问复制粘贴功能

来自分类Dev

如何使用php导入具有复制功能的csv

来自分类Dev

PHP 复制功能在 foreach 循环中不起作用

来自分类Dev

如何检查替补功能的选项

来自分类Dev

如何在与DataTable绑定的DataGridView之间复制行

来自分类Dev

如何实现何时复制浏览器选项卡

来自分类Dev

如何获得选项卡以在Netbeans中正确复制?