可观察变量不适用于重新加载

时间:2014-06-30 08:21:41

标签: jquery knockout.js observable

我正在使用现有的应用程序,其中使用了带有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)

请参阅this sample jsfiddle

第一次加载页面时(或者我刷新浏览器F5 / ctrl + r),这很好用,但问题是这是一个单页面应用程序(index.html),并且使用了多个模板。 / p>

当我导航到其他模板并返回时。它停止工作。可观察变量不包含我使用代码更新的数据。

我已经尝试过调试它。在编辑代码中,它显示可观察变量的值已更改,但在save()值中为空。所以它始终是CreateItem()

归因于ko.applyBindings(...)吗?每次重新访问模板时,它都会重新应用所有函数和绑定。

1 个答案:

答案 0 :(得分:0)

这是由于多个绑定。在每次重新加载时,都会重新创建ModelView并重新应用绑定。所以我通过在JS Map中添加ModelViews并且每次都使用相同的方法来阻止它。谢谢你的回复。