【发布时间】:2017-09-09 06:10:34
【问题描述】:
我所说的“令牌”是指以下其中之一:
我想将点击事件绑定到每个角色旁边显示的白色十字图标。角色只是一个具有Name 属性的实体(JS 对象)。
要从角色到令牌,我有以下功能:
var closeIcon = ' <i class="fa fa-times-circle" aria-hidden="true" data-bind="click: removeRoleForSelectedUser(role)" id="remove-role-btn"></i>';
self.createRoleToken = function(roleName) {
return roleName + ' ' + closeIcon;
};
循环发生在这里:
<div class="roles-wrapper" data-bind="foreach: $root.selectedUser().roles()">
<div class="role-token" data-bind="html: $root.createRoleToken(name())"></div>
</div>
即使我的 HTML 标记上有 data-bind="click: removeRoleForSelectedUser(role)",它仍然不会触发事件,所以我猜它没有被绑定。
我去谷歌寻求答案,saw this。所以我尝试在我的角色令牌上进行绑定(针对 id 属性)。我对用户选择进行了绑定,如下所示:
self.setCurrentUser = function (user) {
const newRolesArray = self.roles().filter(function (role) {
return !contains(user.roles(), role);
});
self.userAvailableRoles(newRolesArray);
self.selectedUser(user);
ko.applyBindings(self, document.getElementById("remove-role-btn"));
}
那没用。它抛出了以下错误:
我错过了什么?
【问题讨论】:
-
您用于关闭按钮的
id似乎不是唯一的 -
好点,我的标记上犯了一个愚蠢的错误,让我改变一下,看看是否有区别
-
还是不行,我从id改为class,did this应用绑定,还是没有触发点击.
-
等等,你在选择用户时重新应用绑定?
-
我认为我必须这样做!我不需要吗?让我试试!