敲除选择绑定,而不是在后期添加选项时记住值

  发布于 2023-01-19 19:35

我使用knockout创建一个select元素,必须设置较晚的选项(通过从服务器加载选项来设置选项).这导致初始值丢失.下面我有一些工作代码,它做我想要的,但从服务器加载替换为静态表.

如果该行setupSelect();被移动到脚本的末尾(这模拟了对服务器的异步ajax调用),那么select会要求我选择.

我认为当没有选择时,值会被覆盖,然后选择到达,但值现在为空.

看起来我知道问题是什么,但不知道如何让它发挥作用.

你能告诉我如何让它发挥作用吗?



  
    
    
    
  
  
   

Your thing: You have chosen a thing with id .

你也可以在这里看到这两个例子http://jsfiddle.net/V33NT/1/

1 个回答
  • 这是默认的行为:Knockout强制该值与现有选项匹配,如果没有存在选项,则取消设置observable.

    然而,KO 3.1中有新的设置.这被称为valueAllowUnset,它正在解决这个问题.

    来自Knockout.js 3.1发布

    如果将此选项设置为true,则Knockout不会强制该值与现有选项匹配.

    如果不匹配,则选择将设置为空选项,但不会覆盖该值.

    这在选项延迟加载且存在现有值的情况下非常有用.

    因此,如果您升级到Knockout.js 3.1,您可以写

    <select data-bind="options:      (function(){return $root.select2.rows;})(), 
                       optionsText:  function(item){return item.name;},
                       optionsValue: function(item){return item.id;},
                       value: selectedThing2, 
                       valueAllowUnset: true, 
                       optionsCaption: 'Choose...'">
    

    演示JSFIddle.

    2023-01-19 19:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有