2013-07-08 68 views
1

我有一個隱藏最後一列的html表。當我點擊一個表格行時,我想把這個隱藏的列值放到div中。這裏有一個小提琴:獲取​​值與Knockout JS並放入div

http://jsfiddle.net/tzD4T/390/

劫型號:

function ViewModelTrazas(data) { 
     var self = this; 
     self.trazas = ko.observableArray(); 
     array = self.trazas; 
    } 

    function push(){ 
     array.push({ 
      Fecha: ko.observable('a'), 
      Maquina: ko.observable('b'), 
      TipoEvento: ko.observable('c'), 
      Mensaje: ko.observable('d') 
     }); 
    } 

    ko.applyBindings(new ViewModelTrazas(), document.getElementById('divDataGrid')); 
    push(); 

表:

<table id="datagrid" style="width: 100%;"> 
     <thead style="text-align:left"> 
      <tr> 
       <th>Date</th> 
       <th>Machine</th> 
       <th>Event type</th> 
       <th>Detail</th> 
       </tr> 
      </thead> 
     <tbody data-bind="foreach: trazas"> 
      <tr> 
        <td data-bind=" text: Fecha"></td> 
        <td data-bind=" text: Maquina"></td> 
        <td data-bind=" text: TipoEvento"></td> 
        <td data-bind=" text: Mensaje"></td> 
      </tr> 
     </tbody> 

我試圖用jQuery,但這個樣本做代碼沒有工作:

$('datagrid tr').click(function(){ 
var detail = $(this).val(); 
// put the value into div 
    ... 
} 
+0

爲什麼要以使其在一開始的表?爲什麼不在用戶點擊行時顯示細節?就像:http://jsfiddle.net/Bt8fg/ – nemesv

+0

@nemesv是的,這就是我想要的,但它說我'無法解析綁定,$父母沒有定義,但小提琴似乎是正確的。 – anmarti

回答

2

看看this fiddle。這很簡單。 我剛剛添加了一個selectedRow obsevable和selectRow事件處理程序。

的觀點:

<table style="width: 100%"> 
    <tr> 
     <td> 
      <div id="divDataGrid" style="margin-top:-4px; 
            height: 200px; overflow:auto;"> 
       <table id="datagrid" style="width: 100%;"> 
        <thead style="text-align:left"> 
         <tr> 
          <th>Date</th> 
          <th>Machine</th> 
          <th>Event type</th> 
          <th>Detail</th> 
         </tr> 
        </thead> 
        <tbody data-bind="foreach: trazas"> 
         <tr data-bind="click: $parent.selectRow"> 
          <td data-bind=" text: Fecha"></td> 
          <td data-bind=" text: Maquina"></td> 
          <td data-bind=" text: TipoEvento"></td> 
          <td data-bind=" text: Mensaje"></td> 
         </tr> 
        </tbody> 
       </table> 
      </div> 
     </td> 
    </tr> 
</table> 
<br/> 
<span>Detail:</span> 
<br/> 
<div data-bind="with: seletedRow"> 
    <div data-bind="text: Mensaje"></div> 
</div> 

JS:

var array; 

function ViewModelTrazas(data) { 
    var self = this; 
    self.trazas = ko.observableArray(); 
    array = self.trazas; 
    self.selectRow = function (row) { 
     self.seletedRow(row); 
    } 
    self.seletedRow = ko.observable(); 
} 

[...] 

See fiddle

+0

你可以嘗試用這個更新的小提琴做同樣的事情嗎? http://jsfiddle.net/tzD4T/390/我剛剛更新了'ko.applyBindings(new ViewModelTrazas(),document.getElementById('divDataGrid'));'它不起作用。 – anmarti

+0

我用div封裝了你的視圖(id = gridAndDetail)。 http://jsfiddle.net/tzD4T/391/ – Damien