Knockout寄存器插入了具有其他功能的元素
Knockout register inserted element with other function
我使用Knockout来显示图像数组的一些标记。每个标签都将有一个弹出窗口,提供有关标签的更多信息。元素以以下方式注册到弹出类中:
function RegisterCharacterPopups() {
$('[data-characterid]').each(function() {
var cId = $(this).data('characterid');
var placement = $(this).data('position');
if (placement == null || placement == undefined) {
placement = "top-center";
}
$(this).PopUp({
url: "/Ajax/CharacterPop/" + cId,
position: placement,
});
});
}
我已经将其添加到视图模型的构造函数中,该构造函数包含以下标签:
// Hook on to update of Tags
ko.computed(() => {
var test = this.Tags();
RegisterCharacterPopups();
console.log("Tags updated");
});
我可以看到方法被执行了,但标签没有在弹出窗口中注册。如果它强制标签再次更新,它会工作吗!我认为问题是这个方法是第一次执行的,在元素进入html之前。我该如何解决这个问题,以便它在执行之前等待插入元素?
解决方案:自定义绑定
ko.bindingHandlers['tagpop'] = {
init: function (element, valueAccessor, allBindings, vm, context) {
var data = valueAccessor();
$(element).PopUp({
url: "/Ajax/CharacterPop/" + data.id,
position: data.placement,
});
},
update: function (element, valueAccessor) {
}
};
相关文章:
- 除修剪外的其他功能
- 是否可以访问其他功能中的克隆
- 解释$apply和$eval |我可以用其他功能替换它们吗 |AngularJS.
- 向 Google Maps API 添加其他功能
- 我是否可以在 Bootstrap 3 中为折叠手风琴指定一个相对的“数据目标”,同时保留“折叠其他”功能
- document.ready在同一页上禁用其他功能
- 获取将图像调整为其容器大小的脚本的名称+其他功能
- 阻止其他功能在所选功能之后运行
- Knockout寄存器插入了具有其他功能的元素
- 停止传播不工作,避免孩子点击触发其他功能
- 如何将变量从客户机传递到服务器,并将其持久化在服务器中用于其他功能
- 在其他功能中使用来自设备方向的值
- 显示服务器上的现有文件,限制文件数量和其他功能
- 解释";您可以具有改变其他功能的功能"
- 替换匿名功能,同时将所有其他功能保留在模块之外
- 如何访问导入模块的其他功能中的道具
- 当其他功能正在运行时,单击按钮触发
- 单击按钮时如何停止其他功能的运行
- 当其他功能完成时运行功能
- 如何在不影响页面其他功能的情况下向我的 HTML 页面添加链接