在循环中单击描述时,knockout.js不会触发click事件

时间:2013-05-30 12:38:20

标签: javascript knockout.js

我有下一个型号代码

<!-- ko foreach: {data: userAdminView.viewRoles, as: 'rrole'} -->
  <tr>                                                    
    <td class="userRolesRoleTitle"><b data-bind="text: rrole.role.name"></b><br/><i data-bind="text: rrole.role.description"></i></td>                                
    <td class="userRolesRoleGroups">
      <!-- ko foreach: {data: rrole.role.groups, as: 'group'} -->
      <div class="usersGroupElement" data-bind="html: group.viewName"></div>
      <!-- /ko -->
      <a class="btn emb green" data-bind="click: userAdminView.addNewGroup,visible:(rrole.role.isNewGroupAccessible) , attr: { value: rrole }"><i class="icon16 plus"></i>add</a>
    </td>
  </tr>
<!-- /ko -->

和模型事件

function userAdminView(user) {
  //some code 
  self.addNewGroup = function(data, event){};
  //some code 
}

所有工作正常但除了userAdminView.addNewGroup事件之外,它在循环中描述时从不触发。 为什么会这样? 感谢

1 个答案:

答案 0 :(得分:2)

更改此部分data-bind="click: userAdminView.addNewGroup"

进入此data-bind="click: $parent.addNewGroup"

查看custom-bindings-controlling-descendant-bindings

  

with和foreach等绑定会在绑定中创建额外的级别   上下文层次。这意味着他们的后代可以访问数据   在外层使用$ parent,$ parents,$ root或$ parentContext。