Jquery 可观测变量don';不要在重新装填上工作

Jquery 可观测变量don';不要在重新装填上工作,jquery,knockout.js,observable,Jquery,Knockout.js,Observable,我正在开发一个现有的应用程序,其中使用了Knockout 2.1.0和JQuery 1.7.0 场景:对于和项,我有3个可观察的变量(Id、名称、版本)。单击Add按钮后,我清除了可观察对象,并从UI中接受新值。例如 myObservableId(""); 单击“从列表视图编辑”,我从列表行设置可观察值。例如 myObservableId(1234); 保存时,我检查Id字段: if id == null createNewItem() else editItem(id) 看

我正在开发一个现有的应用程序,其中使用了Knockout 2.1.0和JQuery 1.7.0

场景:对于和项,我有3个可观察的变量(Id、名称、版本)。单击Add按钮后,我清除了可观察对象,并从UI中接受新值。例如

myObservableId("");
单击“从列表视图编辑”,我从列表行设置可观察值。例如

myObservableId(1234);
保存时,我检查Id字段:

if id == null
    createNewItem()
else
   editItem(id)

当第一次加载页面时(或者我刷新浏览器F5/ctrl+r),这可以正常工作,但问题是这是一个单页面应用程序(index.html),并且使用了多个模板

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

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


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

这是由于多个绑定造成的。每次重新加载时,都会重新创建ModelView并重新应用绑定。因此,我通过在JS映射中添加模型视图并每次使用相同的模型视图来防止这种情况。谢谢您的回复。

我不确定您在这里显示的代码是否足够。你在什么地方用耳环吗?由于您似乎想更新一个项目(如果它存在),否则您将创建一个新项目,因此我假设您在某处有一个项目数组?不,我没有任何可观察的数组。但我发现了问题所在。这是由于多个绑定造成的。每次重新加载时,都会重新创建ModelView并重新应用绑定。因此,我通过在JS映射中添加模型视图并每次使用相同的模型视图来防止这种情况。谢谢你的回复。