【问题标题】:Pass data from one view model to other using typescript [closed]使用打字稿将数据从一个视图模型传递到另一个视图模型[关闭]
【发布时间】:2014-01-10 06:03:34
【问题描述】:

我是打字稿的新手,我想做的是从一个视图发布数据(使用该视图的相应视图模型)并从服务器(控制器)获取一些返回数据,这是一个 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 未定义。 我知道我错过了一些非常基本的东西并且做错了一些事情,但无法弄清楚。 请帮忙。 谢谢 爱尔兰共和军

【问题讨论】:

  • 感谢 cmets,是的,我知道有些地方很不对劲,但解决方案是什么。我对 Typescript 不是很精通。
  • 请不要破坏您自己的问题。回滚到一个有意义的答案,有人花了一些时间给你的答案。

标签: variables typescript global argument-passing


【解决方案1】:

当这行执行时:

import common = require('common');

将运行以下代码:

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

您实际上所做的只是定义了一个变量和一个函数。除非您调用 SubmitPage 并且 xhr 完成,否则不会设置 commonData(因此将设置为 undefined)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多