2012-07-09 33 views
0

我刚刚遇到了一个很奇怪的问题,我有多个applyBindings()但它们都是针对不同的元素。现在,这一切都用于正常工作,因为一旦所有资源都被加载(yepnope完全回调),所有事情都会发生,但是现在它基于引发的事件(从我们的内部事件系统)发生,似乎有一个奇怪的错误(说视图模型没有可观察到的,但是因为它看起来不正确)。淘汰赛部分绑定问题

问题是,最后一个绑定似乎因为某种原因覆盖了所有其他绑定,所以如果我有4个元素具有唯一的id和4个视图模型,每个绑定到它们的coresponding元素,所以我期望绑定发生像这样:

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中调试时,viewmodels和元素是正确的,而不是未定义的,这可以解释为什么最后一个调用会覆盖所有其他元素。

我会尝试做一个jsfiddle,但由于项目和外部模板和依赖项的复杂性质,它不可能。

所有的事情都指向我做错了什么,而不是KnockoutJS,但我不明白为什么它以前用得很好,唯一改变的是绑定的顺序和时间。

任何有史以来见过的applyBindings渗入其他元素或覆盖以前的绑定?

回答

0

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