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

标签 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 事件除外,它在循环中描述时从未触发。 为什么会发生? 谢谢

最佳答案

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

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

检查一下 custom-bindings-controlling-descendant-bindings

Bindings such as with and foreach create extra levels in the binding context hierarchy. This means that their descendants can access data at outer levels by using $parent, $parents, $root, or $parentContext.

关于javascript - 在循环中单击描述时,knockout.js 不会触发单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16836430/

相关文章:

javascript - 地理编码器调用在 for 循环中不起作用

javascript - AJAX 如何在不重新加载页面的情况下工作?

javascript - '$root' 上的未捕获引用

javascript - knockout : computed observables in cascaded arrays (complex viewmodel) and the this-pointer

javascript - jssor 箭头排列错误

javascript - jQuery:让第二个函数等待执行,直到第一个函数完成

JavaScript效率: big object vs many arrays

javascript - iframe 的跨域问题

javascript - 在处理之前从 json/js 提要中删除所有 javascript 标签

javascript - Knockout - 如何引用单击的元素并传入参数