2016-09-03 4 views
0

私のviewmodel:グラブ正しいデータ

function AddEmployeesViewModel() { 
    var self=this; 
    self.names=ko.observableArray(); 
    } 

    AddEmployeesViewModel.prototype.addEmployee=function(){ 
    ??? 
    }; 

$.getJSON('/xxx.json').then(function(data){ 
     addEmployeesViewModel.names([]); 
     for (i=0; i<data.length; i++) { 
      addEmployeesViewModel.names.push({id:data[i].id,name:data[i].name}); 
     } 
     }, 
     function(){ 
      console.log('failure'); 
     } 
    ); 


var addEmployeesViewModel=new AddEmployeesViewModel(); 
ko.applyBindings(addEmployeesViewModel); 

と私のモデル:

<div> 
    <!-- ko foreach: names --> 
    <div> 
     <input type="checkbox" data-bind="checked: $root.addEmployee"><span data-bind="text: name"></span> 
    </div> 
    <!-- /ko --> 
</div> 

私の問題は、名前にするたびに、対応するIDを返すためにaddEmployee機能を作ることですチェックボックスを選択します。それを達成するための最良の方法はどれですか?

答えて

0

checked bindingは、コールバックをとらず、チェックボックスの状態に応じてtrueまたはfalseに設定される監視可能な状態をとります。

あなたの説明から、clickをチェックボックスで処理するように見えます。チェックされている場合は、関連するデータ項目で何かを実行します。

vm = { 
 
    addEmployee: function(data, event) { 
 
    if (event.target.checked) { 
 
     console.debug("Do something with", data.id); 
 
    } 
 
    return true; 
 
    }, 
 
    names: ko.observableArray([{ 
 
    name: 'one', 
 
    id: 1 
 
    }, { 
 
    name: 'two', 
 
    id: 2 
 
    }]) 
 
}; 
 

 
ko.applyBindings(vm);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 
<div> 
 
    <!-- ko foreach: names --> 
 
    <div> 
 
    <input type="checkbox" data-bind="click: $root.addEmployee"><span data-bind="text: name"></span> 
 
    </div> 
 
    <!-- /ko --> 
 
</div>