如何调用在其他函数链中创建的函数?

时间:2012-11-14 05:30:27

标签: javascript typescript

我创建了以下内容:

module Admin.Grid {
    export function addGridControls() {

        $('#createLink')
            .click(function () {
                var $link = $(this);
                $link.prop('disabled', true);
                adminDialog($link);
                return false;
            });
    }
}

这转换为:

var Admin;
(function (Admin) {
    (function (Grid) {
        function addGridControls() {
            $('#createLink').click(function () {
                var $link = $(this);
                $link.prop('disabled', true);
                adminDialog($link);
                return false;
            });

以前当它不在模块中时,我调用了这样的函数:

$(document).ready(function () {
    "use strict";
    addGridControls()
});

现在它在一个模块内部,这是我调用它的最佳方式 函数,以便每次文档准备好时执行它?

2 个答案:

答案 0 :(得分:1)

这样做的一种方法是将函数添加到某个对象。

var Admin = {};
(function (Admin) {
    (function (Grid) {
        Admin.addGridControls = function () {
....

并称之为

$(document).ready(function () {
    "use strict";
    Admin.addGridControls()
});

答案 1 :(得分:0)

正如@Mike Lin评论的那样,你需要导入模块。

使用TypeScript(并假设采用AMD模块格式,将模块放在另一个文件中),您可以这样做:

import g = module('path-to-admin-grid-module');

$(document).ready(() => {
    "use strict";
    g.Admin.Grid.addGridControls();
});

否则,如果你只是在同一个文件中使用内部模块,那就简单如下:

$(document).ready(() => {
        "use strict";
        Admin.Grid.addGridControls();
});

后面的案例在演练:模块示例中很好地预览了:http://www.typescriptlang.org/Playground/

前者有一个非常好的例子:TypeScript compile AMD modules with required defines这里有更详细的介绍:http://requirejs.org/docs/whyamd.html