【问题标题】:How can I call a function inside a function in Typescript?如何在 Typescript 的函数中调用函数?
【发布时间】:2012-11-04 01:20:35
【问题描述】:

我有以下脚本:

/// <reference path="updateAjax.ts" />
/// <reference path="updateSetUp.ts" />
/// <reference path="../../Shared/typescript/reference.ts" />

module Admin.Grid {

    export function updateField(entity: string, $link: JQuery) {

        var link = new Link($link),
            idArr = $link.attr("id"),
            idTmp = idArr.split("_");

        link.AdminParams = Admin.Shared.getAdminParams(entity),
        link.Entity = entity;
        link.InputFieldType = $link.attr('id').split('_')[1];
        link.Row = idTmp[2],
        link.PartitionKey = $("tr[id='row_" + link.Row + "']").attr('data-pk'),
        link.RowKey = $("tr[id='row_" + link.Row + "']").attr('data-rk');
        link.InputFieldValue = $link.is(":checkbox") ? $link.is(":checked") : $link.val(),

        updateSetUp(link);
        updateAjax(link);
    }
}

在另一个文件中:

/// <reference path="../../Shared/typescript/reference.ts" />

module Admin.Grid {

    export function updateSetUp(link: Link) {
        $("#modified_" + link.Row).html('Updating');
        $("#modifiedBy_" + link.Row).html('Updating');
        $("#input_" + link.InputFieldType + "_" + link.Row)
            .next('span').remove().end()
            .after('<span class="check-waiting"></span>');
    }

}

当第一个脚本编译为 javascript 我没有看到任何对 updateSetup(link) 或 updateAjax(link) 的调用

我在 VS2012 中使用 Web Essentials。我没有收到错误消息或红色下划线。据我所见,我的所有链接都是正确的。删除文件并重新创建没有区别。

这是生成的 javascript:

var Admin;
(function (Admin) {
    (function (Grid) {
        function updateField(entity, $link) {
            var link = new Link($link);
            var idArr = $link.attr("id");
            var idTmp = idArr.split("_");

            link.AdminParams = Admin.Shared.getAdminParams(entity) , link.Entity = entity;
            link.InputFieldType = $link.attr('id').split('_')[1];
            link.Row = idTmp[2] , link.PartitionKey = $("tr[id='row_" + link.Row + "']").attr('data-pk') , link.RowKey = $("tr[id='row_" + link.Row + "']").attr('data-rk');
            link.InputFieldValue = $link.is(":checkbox") ? $link.is(":checked") : $link.val() , Grid.updateSetUp(link);
            Grid.updateAjax(link);
        }
        Grid.updateField = updateField;
    })(Admin.Grid || (Admin.Grid = {}));
    var Grid = Admin.Grid;

})(Admin || (Admin = {}));

【问题讨论】:

  • 我确实看到有人打电话给Grid.updateAjax(link);
  • Grid.updateSetUp(link); 就在它之前,尽管在右边。
  • @Jan - 非常感谢。似乎问题在于转换为打字稿时的格式。我想它可能应该在一个新的线路上。事实上,当我在 VS2012 中查看时,两者都在屏幕的最右边,因此我错过了它们。
  • 我敢打赌,当你想阅读编译代码;-)时,在编写打字稿时不应该使用,而不是;

标签: javascript typescript


【解决方案1】:

这些调用确实存在于已编译的代码中。请注意,大量使用逗号而不是分号会导致行很长:

link.AdminParams = Admin.Shared.getAdminParams(entity) , link.Entity = entity;
link.InputFieldType = $link.attr('id').split('_')[1];
link.Row = idTmp[2] , link.PartitionKey = $("tr[id='row_" + link.Row + "']").attr('data-pk') , link.RowKey = $("tr[id='row_" + link.Row + "']").attr('data-rk');
link.InputFieldValue = $link.is(":checkbox") ? $link.is(":checked") : $link.val() , Grid.updateSetUp(link);
Grid.updateAjax(link); //<<<here and ...                                             ^here^

【讨论】:

  • 谢谢 Jan。我刚刚注意到逗号 ", Grid.updateSetUp(link);"删除它,一切都很好。 30 分钟让我发疯了 :-) 我会接受你的回答。
猜你喜欢
  • 1970-01-01
  • 2017-02-01
  • 2020-05-06
  • 2018-07-27
  • 1970-01-01
  • 1970-01-01
  • 2022-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多