Dynamicznie ustaw kolumny tabeli z ko.observableArray

Próbuję wyświetlić tabelę danych na podstawie ako.observableArray gdzie zwracane kolumny nie są wcześniej określone.

Próbka przedmiotu z mojego observableArrayself.userData()[0] byłoby:

Object {
        RowNum: 1, 
        ID: "123", 
        Surname: "Bloggs", 
        Forename: "Joe", 
        Address line 1: "1 Park Lane"
}

Te kolumny byłyby różne za każdym razem, w zależności od tego, co użytkownik wybrał do wyprowadzenia.

Chcę, aby nagłówki kolumn w moim wyjściu były określane przez to, co jest w tablicy, więc moim pożądanym wyjściem będzie:

<table>
   <thead>
      <tr>
         <th>RowNum</th>
         <th>ID</th>
         <th>Surname</th>
         <th>Forename</th>
         <th>Address line 1</th>
      </tr>
   </thead>
   <tbody>
      <tr>
         <td>1</td>
         <td>123</td>
         <td>Bloggs</td>
         <td>Joe</td>
         <td>1 Park Lane</td>
      </tr>
      <!-- repeated for each row -->
   </tbody>
</table>

Wiem, że mogę użyćforeach powtarzać wiersze i kolumny, ale nie jestem pewien, jak odwoływać się do niego dynamicznie na podstawie tego, co jest obecne w moimobservableArray.

W tej chwili mam tę podstawową strukturę:

<table>
    <thead> 
        <tr data-bind="foreach: userData [property name] ">
            <th>
               <span data-bind="text: [property name]"></span>
            </th>                   
        </tr>
    </thead>
    <tbody data-bind="foreach: userData">                
        <tr data-bind="foreach: userData [property name]>
            <td data-bind="text: [property value]">                            
            </td>                        
        </tr>
    </tbody>
</table>

questionAnswers(1)

yourAnswerToTheQuestion