代码之家  ›  专栏  ›  技术社区  ›  alwaysVBNET

将ObservableArray的特定索引绑定到输入控件

  •  0
  • alwaysVBNET  · 技术社区  · 8 年前

    我加了一些 observable objects 变成一个 observableArray : dynaobs 它们看起来像:

    "dynaobs": [
        {
          "SpecName": "reportingcurrency",
          "SpecValue": "EUR"
        },
        {
          "SpecName": "transactionscurrency",
          "SpecValue": "GBP"
        }
      ]
    

    我可以查看以下值:

     <div class="col-sm-6" data-bind="foreach: { data: dynaobs, as: 'ct' }">        
            <input type="text" data-bind="value: ct.SpecValue" />       
    </div>
    

    但是,我想装订 只有第一个索引 对如下输入控件的ObservableArray,但它给了我一个错误:

    <div data-bind="value: dynaobs()[0]">
        <input type="text" data-bind="value: $data" />
    </div>
    

    我已经尝试过:

     <div data-bind="value: dynaobs()[0]">
            <input type="text" data-bind="value: $parent.SpecValue" />
        </div>
    
     <div data-bind="value: dynaobs[0]">
            <input type="text" data-bind="value: $parent.SpecValue" />
        </div>
    

    还有很多,但没有运气。有什么想法吗?

    编辑 : 这就是我添加观察数据的方法:

      for (var i = 0; i < data.specifications.length; i++) {
                if (data.specifications[i].controlname != null) {
                   conv(data.specifications[i].controlname, data.specifications[i].specvalue);            
                }
    
            }
    

    呼唤:

    function conv(lbl, val) {               
        this[lbl] = ko.observable(val);
        dynaobs.push(this[lbl]);
    }
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Akrion    8 年前

    value $data

    var ViewModel = function() {
        this.arr = ko.observableArray([
        {
          "SpecName": "reportingcurrency",
          "SpecValue": "EUR"
        },
        {
          "SpecName": "transactionscurrency",
          "SpecValue": "GBP"
        }
      ])
    };	
    
    ko.applyBindings(new ViewModel());
    <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
    <div>
        <input type="text" data-bind="value: arr()[0].SpecValue" />
    </div>
    推荐文章