剔除部分约束问题

knockout partial binding issue

本文关键字:约束 问题      更新时间:2023-09-26

我刚刚遇到一个非常奇怪的问题,我有多个applyBindings(),但它们都针对不同的元素。现在,这一切过去都很好,因为一旦加载了所有资源(yepnope完全回调),就会发生这种情况,但现在它是基于(从我们的内部事件系统)引发的事件发生的,它似乎有一个奇怪的错误(说视图模型没有可观察的,但这是因为它没有找到正确的视图)。

问题是,由于某种原因,最后一个绑定似乎覆盖了所有其他绑定,所以如果我有4个具有唯一ID的元素和4个视图模型,每个视图模型都绑定到它们对应的元素,那么我希望绑定会这样发生:

element_a -> view_model_a
element_b -> view_model_b
element_c -> view_model_c
element_d -> view_model_d

然而,由于某些原因,绑定view_model_d时绑定似乎会发生变化,因此它们都变为:

element_a -> view_model_d
element_b -> view_model_d
element_c -> view_model_d
element_d -> view_model_d

正如我所说,这曾经很好地工作,但由于我们转向了应用绑定的异步方式,它似乎有点崩溃,所有绑定的元素都在html中并且是自包含的(即,它们都不是动态注入的,并且在DOM中不重叠)。此外,在firebug中调试时,视图模型和元素是正确的,没有未定义,这可以解释为什么最后一个调用会覆盖所有其他元素。

我会尝试做一个jsfiddle,但由于项目的复杂性以及外部模板和依赖关系,这是不可能的。

所有的事情都表明我做错了什么,而不是KnockoutJS,但我不明白为什么它过去工作得很好——唯一改变的是应用绑定的顺序和时间。

有人见过applyBindings渗入其他元素或覆盖以前的绑定吗?

就像往常一样,答案归结为我是个白痴。由于我使用了一个使用templateUrl作为其选项之一的外部模板加载程序,出于某种原因,它是templateUrl,由于某种原因,最初一定是有效的,但由于现在加载的顺序,它正在重新加载同一页面,而不是所需的模板,这意味着整个页面绑定将被重新加载:(