KnockoutJS在隐藏的页面上更新ViewModel

汤姆·史瑞克

我有我的索引页面,其中显示项目列表。索引页是可观察的。我单击列表中的一条记录以加载详细信息页面,用户可以在其中修改数据。我可以使用jQuery ajax将修改成功地发布到服务器,并且返回更新的记录,因此可以更新索引页面上的列表。我不知道如何使用将更新发布到服务器的结果来更新索引页面的基础数据。我尝试实例化一个新的IndexViewModel,但是UI不能反映新模型。我已经尝试过ko.mapping.fromJS(sourceData,targetObservableViewModel),但是“索引”页面的UI不会更新。如何通过在完全不同的页面上成功提交Ajax来更新索引页面的基础数据?

        ApplicationUtils.AjaxRequestSendData
    (
        'POST',
        saveUrl,
        dataModel,
        function (jsonFromServer)
        {
            updateViewModel(jsonFromServer, self.activeGamesList);
            history.back();
        },
        function (resultsFromServer)
        {
            alert('errror happened.  not sure what happened though.');
        }           
    );

var updateViewModel = function (sourceData, targetObservableViewModel){
ko.mapping.fromJS(sourceData, targetObservableViewModel);};

谢谢你的帮助。

多米尼克斯

我想发表评论而不是回答,以要求提供有关所使用其他技术的更多详细信息,但尚未有足够的代表:(

在这种情况下,可以使用两种解决方案:

  1. 简单但昂贵:在加载视图模型时,首先要做的是删除现有数据并从服务器查询新数据。

  2. 使另一个javascript对象保存您的数据,并将其通过不同的viewmodel传递。在这种情况下,您的视图模型将只包含指向数据的指针,而不是往返于服务器以获取新数据,并且在保存时,您将告诉该javascript对象处理您的保存/重新加载。数据更改后,您的其他视图模型将立即“看到”更改,因为它包含指向该数据的指针。

第二个选项基于Hot Towel SPA模板中提供的真正简单有效的解决方案-因此,如果可以的话,我建议您检查一下是否可用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章