2015-06-11 5 views
1

HTML

Вы можете увидеть в HTML я звоню editUser с двумя параметрами. $ data являются первым параметром, а $ index() - вторым. Он должен отправить текущий пользовательский объект в первом параметре, а индекс цикла foreach - вторым.

 <tbody data-bind="foreach: users"> 
      <tr> 
       <td> 
        <div data-bind="click: $parent.editUser.bind($data, $index())" class="clickable icon black-icon big-icon icon-edit"></div> 
       </td> 
       <td data-bind="text: email"></td> 
       <td data-bind="text: username"></td> 
       <td data-bind="text: level"></td> 
      </tr> 
     </tbody> 

Код

appViewModel.editUser = function(user, index){ 
     console.log(user); 
     console.log(index); 
    }; 

Выход

0 
Object{} 

Она полностью меняет параметры каким-то образом. Я затрудняюсь объяснить это поведение.

ответ

1

Первый аргумент bind - это контекст функции. Таким образом, если вы хотите передать 2 аргумента тебе понадобится это:

$parent.editUser.bind($data, $data, $index()) 

Таким образом, this в вашей editUser функции будет текущий элемент в вашей foreach итерации.

См. MDN

Смежные вопросы