使用typescript将数据从一个视图模型传递到另一个模型

时间:2014-01-10 06:03:35

标签: variables typescript global argument-passing

我是打字稿的新手,我想要做的是从一个视图发布数据(使用该视图的相应viewmodel)并从服务器(控制器)获取一些返回数据,这是一个JSON对象并将此返回的数据传递给下一个视图模型(并在下一个视图中显示)。 我想使用Typescript来做到这一点。我正在使用一些代码(我想要通常用于提交所有视图),如下面的名称common的模块。

export var commonData;

function SubmitPage(url: string, dataToPost: JSON, nextPage: string) {
    $.post(url, dataToPost, function (returnedData, textStatus) {
        if (textStatus == 'success') {
          commonData = returnedData;
          router.navigate(nextPage);
        }
        else {
            ShowErrorMessage(returnedData);
        }
    })
}

在这里,我可以看到从服务器返回的返回数据,我正在分配给变量commonData并希望在另一个视图模型中访问它,基本上我希望commonData可以在所有视图模型中全局访问。   在我的其他视图模型中,我正在使用类似这样的东西

import common = require('common');
var data = ko.toJS(common.CommonData);

其中common是定义commonData的模块的名称。 现在我看到commonData为undefined。 我知道我错过了一些非常基本的东西并做了一些错事,但却无法弄明白。 请帮忙。 谢谢 艾拉

1 个答案:

答案 0 :(得分:2)

执行此行时:

import common = require('common');

将运行以下内容:

var commonData;    
function SubmitPage(url: string, dataToPost: JSON, nextPage: string) {
    // whatever 
}

你所做的一切都是定义一个变量和一个函数。除非您调用SubmitPage xhr完成,否则commonData将不会被设置(因此将为undefined)。