【问题标题】:dynamic binding of radio checked observable name无线电检查的可观察名称的动态绑定
【发布时间】:2017-08-10 18:21:39
【问题描述】:

这是我当前的视图模型

Shortconfig = {
  configa = ko.observable('');
  configb = ko.observable('');
  ...
  configN = ko.observable('');
 }
config = ko.observableArray ([ 
  configA = {
    options : [ { 'text':'Option1', 'value': 'O1' },  
            { 'text':'Option2', 'value': 'O2' },
            ....
            { 'text':'OptionN', 'value': 'ON' }
          ],
   image : 'imageconfiga.jpg',
   fieldname : Shortconfig.configa
  }, 

  configb = {
    options : [ { 'text':'Option1', 'value': 'O1' },  
            { 'text':'Option2', 'value': 'O2' },
            ....
            { 'text':'OptionN', 'value': 'ON' }
          ],
   image : 'imageconfiga.jpg',
   fieldname : Shortconfig.configb
  }, 
  ....
confign = {
    options : [ { 'text':'Option1', 'value': 'O1' },  
            { 'text':'Option2', 'value': 'O2' },
            ....
            { 'text':'OptionN', 'value': 'ON' }
          ],
   image : 'imageconfiga.jpg',
   fieldname : Shortconfig.confign
  }
]);

换句话说,我有一系列选项; 由此我可以使用一个模板轻松生成我需要的所有单选按钮,并根据需要将其作为 div 使用,以生成我需要的单选按钮组。

我的问题是每组单选按钮必须绑定到shortconfig中的不同字段

configa 单选按钮必须有一个 data-bind = "value:$root.Shortconfig.configa" 并且 configb 单选按钮必须有一个 data-bind = "value:$root.Shortconfig.configb" 等等。

我尝试在每个配置中使用 fieldname 条目,但我惨遭失败,并且找不到如何做到这一点,因为我无法找到

1- 如果可能的话

2- 我应该使用什么语法,

我只能在模板中硬编码;因此,目前有 30 多组选项,我最终得到了 30 多个模板,仅用于那一件事。

所以我的问题是可能的,我该怎么写?

希望我能理解自己。

提前感谢您的宝贵时间

迪迪尔

【问题讨论】:

    标签: knockout.js


    【解决方案1】:

    查看工作小提琴:https://jsfiddle.net/y4hskdpu/1/

    var _Shortconfig = function () {
      var self = this;
      self.configa = ko.observable('');
      self.configb = ko.observable('');
      self.configN = ko.observable('');
    }
    
    var Shortconfig = new _Shortconfig();
    

    那么这是可以访问的:

    fieldname: Shortconfig.configa
    

    【讨论】:

    • 非常感谢 tyler_mitchell 抽出宝贵时间,这很好用。我的数据模型实际上要复杂得多,并且我需要使用一个模板来访问内部循环的父级,这似乎不起作用。所以知道有可能,我将字段名移动到内部数组中,现在它可以工作了,再见 30 多个模板!非常感谢
    • 事实上,似乎只是 $parent 的语法导致了问题;在 foreach 模式下使用带有“as”参数的模板,我能够从最里面的数组中删除 firlname,从而节省了大量重复。
    猜你喜欢
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 2017-11-25
    • 2012-11-02
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多