我正在使用现有的应用程序,其中使用了带有JQuery 1.7.0的Knockout 2.1.0。
场景:我有3个可观察变量和Item(Id,Name,version)。单击“添加”按钮后,我清除了observable并从UI接受新值。例如。
myObservableId("");
单击Edit from List视图,我从List Row设置了可观察值。 E.g。
myObservableId(1234);
在保存时,我检查Id字段:
if id == null
createNewItem()
else
editItem(id)
第一次加载页面时(或者我刷新浏览器F5 / ctrl + r),这很好用,但问题是这是一个单页面应用程序(index.html),并且使用了多个模板。 / p>
当我导航到其他模板并返回时。它停止工作。可观察变量不包含我使用代码更新的数据。
我已经尝试过调试它。在编辑代码中,它显示可观察变量的值已更改,但在save()
值中为空。所以它始终是CreateItem()
。
归因于ko.applyBindings(...)
吗?每次重新访问模板时,它都会重新应用所有函数和绑定。
答案 0 :(得分:0)
这是由于多个绑定。在每次重新加载时,都会重新创建ModelView并重新应用绑定。所以我通过在JS Map中添加ModelViews并且每次都使用相同的方法来阻止它。谢谢你的回复。