【问题标题】:Iterating a knockout observable array in javascript在 javascript 中迭代一个淘汰赛 observable 数组
【发布时间】:2013-05-15 16:52:53
【问题描述】:

如何使用淘汰赛 js 映射插件迭代绑定到数据的淘汰赛可观察数组?我创建了this fiddle 来演示我的问题。当我尝试获取淘汰赛 js 数组对象的值时,它会返回一个函数。

有人可以帮我解决这个问题吗?我的代码如下所示。

//Sample JSON Array
var data =
[{"street":"2532 Falkark Dr", "lat":"39.926295", "lng":"-86.012919",   "zipcode":"92256"},{"street":"8558 Appleby Ln", "lat":"39.922742", "lng":"-86.017637", "zipcode":"92256"}]

function ViewModel() {
var self = this;
self.addresses = ko.observableArray([]); 
ko.mapping.fromJS(data, {}, self.addresses);

}
var viewModel = new ViewModel();

//function binding work order details to view
$(document).ready(function () {
  ko.applyBindings(viewModel);
  gothroughtheObservableArray(viewModel.addresses());
});


function gothroughtheObservableArray(Addressarray)
{
 alert("Got Address Array of length "+Addressarray.length);    

for (var i = 0, len = Addressarray.length; i < len; ++i) {
    var address = Addressarray[i];
    alert(address.street);
}

}

【问题讨论】:

    标签: knockout-mapping-plugin


    【解决方案1】:

    当您使用mapping.fromJS 时,它会将属性映射到可观察对象。

    在 Knockout 中,当您创建一个 observable 以访问它时,您调用它的函数名称。

    所以当你创建时

    self.addresses = ko.observableArray([]); 
    

    为了访问底层数组并对其进行迭代(就像任何其他 JavaScript 数组一样),您应该这样做

    var innerArray = self.addresses();
    

    就像你做的那样。但是,由于每个地址都映射到一个可观察对象,因此在访问地址的实际属性时需要这样做。

    试试

        alert(address.street());
    

    (fiddle)

    【讨论】:

      【解决方案2】:

      您也可以将函数重写为如下所示:

      function gothroughtheObservableArray(Addressarray)
      {
       alert("Got Address Array of length "+Addressarray().length);    
      
      for (var i = 0, len = Addressarray().length; i < len; ++i) {
          var address = Addressarray()[i];
          alert(address.street());
      }
      
      }
      

      这会起作用,因为当 Benjamin 回答以获取对 observable 的访问权限时,您调用了它的函数。

      【讨论】:

        猜你喜欢
        • 2013-04-10
        • 2017-06-23
        • 2012-11-14
        • 2016-11-15
        • 1970-01-01
        • 2022-01-22
        • 2015-07-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多