在RequireJS中调用函数

时间:2015-10-06 23:19:43

标签: javascript requirejs

是否可以在RequireJS中创建一个对象?

因为这样FunctionA事件中可以看到Click

require(["library1", "library2"], function (obj1) {
    $('#loginButton').click(function () {
        functionA();
    });
    functionA() {
        obj1.value;
    }
});

但如果我做这样的事情,它就不起作用了:

var library = new library();
require(["library1", "library2"], function (obj1) {
    $('#loginButton').click(function () {
        library.functionA();
    });
});

function library() {
    this.functionA = function () {
        obj1.value;
    }
}

var library = new library();
$('#loginButton').click(function () {
    library.functionA();
});

functionA() {
    require(["library1", "library2"], function (obj1) {
        this.functionA = function () {
            obj1.value;
        }
    });
}

这可能吗?

1 个答案:

答案 0 :(得分:0)

我不确定为什么你的明确例子不起作用。但是,我建议您确保jQuery语句中的require成为依赖项。

以下是使用dojoAMD使用像RequireJS这样的RequireJS环境。我只是想确保我能够为我的示例加载多个模块,dojo没有像var library = new library(); require(["dojo/dom", "jquery"], function(dom, $) { $('#button').click(function() { library.functionA(); }); }); function library() { this.functionA = function() { console.log("hello"); } }那样的模块。

我能够通过修复依赖项来使你的第二个例子工作。



<script>
  var dojoConfig = {
    parseOnLoad: false,
    isDebug: true,
    async: 1,
    packages: [{
      name: "jquery",
      location: "//code.jquery.com",
      main: "jquery-1.11.3.min"
    }]
  };
</script>

<!-- Include the dojo 1.10.4 CDN -->
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>


<main>
  <button id="button" type="button">Click me</button>
</main>
&#13;
public MyList(List<? extends T> list) {
    for (T item : list)
        This.addWithoutCopy(item);
}

MyList<T> add(T item) {
    MyList<T> copy = new MyList<T>(this);
    copy.addWithoutCopy(item);
    return copy;
}
&#13;
&#13;
&#13;