0

我在显示淘汰赛可观察数组中的项目时遇到问题。

下面的代码显示长度为 3(所以我知道有元素),但 foreach 不显示任何行。

<label data-bind="text: Data().length"></label>
<table>
    <tbody data-bind="foreach: Data">
        <tr>
            <td >woot</td>
        </tr>
    </tbody>
</table>

的结果

<label data-bind="text:  ko.toJSON(Data)"></label>

是:

 [ { "Description" : null,
    "DeviceId" : "fake1",
    "DeviceType" : null,
    "Policy" : null
  },
  { "Description" : null,
    "DeviceId" : "fake2",
    "DeviceType" : null,
    "Policy" : null
  },
  { "Description" : null,
    "DeviceId" : "fake3",
    "DeviceType" : null,
    "Policy" : null
  }
]

非常感谢任何建议

4

2 回答 2

2
<label data-bind="text: Data().length"></label>
<table>
    <tbody data-bind="foreach: Data">
        <tr>
          <td data-bind="text: DeviceId"></td>
          <td>woot</td>
        </tr>
    </tbody>
</table>

<label data-bind="text:  ko.toJSON(Data)"></label>  

<script type="text/javascript"> 
    var JSONdata = [ { "Description" : null,
        "DeviceId" : "fake1",
        "DeviceType" : null,
        "Policy" : null
      },
      { "Description" : null,
        "DeviceId" : "fake2",
        "DeviceType" : null,
        "Policy" : null
      },
      { "Description" : null,
        "DeviceId" : "fake3",
        "DeviceType" : null,
        "Policy" : null
      }
    ];

    function ViewModel() {
        var self = this;
        self.Data = ko.observableArray(JSONdata);  
    }

    ko.applyBindings(new ViewModel());

</script>
于 2013-10-03T10:20:44.470 回答
1

您是否在问题中显示了所有javascript 代码?
无论如何,这是一个简单的工作示例,其中包含一个用于显示 DeviceId 的表格单元格;
希望能帮助到你。

http://jsbin.com/UZIDira/2/edit?html,js,输出

HTML

<label data-bind="text: Data().length"></label>
<table>
    <tbody data-bind="foreach: Data">
        <tr>
          <td data-bind="text: DeviceId"></td>
          <td>woot</td>
        </tr>
    </tbody>
</table>

<label data-bind="text:  ko.toJSON(Data)"></label> 

Javascript

var myJSON = [ { "Description" : null,
    "DeviceId" : "fake1",
    "DeviceType" : null,
    "Policy" : null
  },
  { "Description" : null,
    "DeviceId" : "fake2",
    "DeviceType" : null,
    "Policy" : null
  },
  { "Description" : null,
    "DeviceId" : "fake3",
    "DeviceType" : null,
    "Policy" : null
  }
];

function ViewModel() {
    var self = this;
    self.Data = ko.observableArray(myJSON);  
}

// Activates knockout.js
ko.applyBindings(new ViewModel());
于 2013-10-03T00:14:42.480 回答