动态构建挖空模型和视图,未设置单选按钮

时间:2013-12-10 16:54:01

标签: javascript knockout.js

我正在使 my previous questions 之一完全动态化,因为模型是根据服务器数据构建的,并且视图通过淘汰赛{{1}循环遍历viewmodel功能。

我面临的问题是:

  1. 无线电选项不会保留值集,即我单击操作系统,然后选择数据库选项,然后操作系统设置消失。

  2. 从属选项(在本例中为数据库和群集)在从属选项更改时没有选择其初始选择(即当操作系统更改时,数据库应返回到第一个选项,无)。

  3. My fiddle is here ,我认为问题与以下代码有关:

    ko foreach

    或我的视图绑定:

     computedOptions.subscribe(function () {
                        var section = this;
                        console.log("my object: %o", section);   
                        section.selection(section.options()[0].sku);
                    },section);
    

    我不确定哪一个,并且会因为我的大脑从jsfiddle会话中受伤而感到新鲜的眼睛。

1 个答案:

答案 0 :(得分:2)

你有两个问题:

  • 您没有正确绑定单选按钮的名称:name="$parent.name"不是敲除绑定表达式,只是将字符串"$parent.name"分配给所有单选按钮。您需要的是使用attr绑定:

    <input type="radio" data-bind="checkedValue: $data, 
                                   checked: $parent.selection, 
                                   attr: { name: $parent.name }" />
    
  • 初始选择无效,因为您使用的是checkedValue: $data选项,这意味着您的checked应包含整个对象,而不仅仅是一个属性( sku)所以您需要将computedOptions.subscribe更改为:

    computedOptions.subscribe(function () {
        var section = this; 
        section.selection(section.options()[0]);
    },section);
    

演示JSFiddle