私は reuqireJS を使用しており、必要な js ファイルにある関数を呼び出すのに苦労しています。私のメインのapp.js
「コントローラー」は(plugin)app.js
、すべてのプラグイン構成とプラグイン関連の機能を処理する を必要とします。
これは app.js
define([], function(){
var start = function() {
require(['jquery', 'overrides', 'jqm', 'multiview', 'respond'],function() {
// globals
var
// PROBLEM attempt at an external plugin function object
dataTablesExt = {},
...;
// call for (plugin)app.js
enhanceDataTables =
function( page, from ) {
var datatable = page.find('.table-wrapper table');
if ( datatable.length > 0 && datatable.jqmData('bound') != true ) {
datatable.not(':jqmData(bound="true")')
.each( function() {
var that = $(this),
tblstyle = that.jqmData("table-style");
that.jqmData('bound', true);
require(['services/datatables/app'], function (App) {
// this calls (plugin)app.js
App.render({style: tblstyle, table: that });
});
});
}
};
// PROBLEM - try to call function "Hello" inside datatables.app
anotherFunc=
function( page, from ) {
dataTablesExt.sayHello("john");
};
私の問題は、グローバル変数dataTablesExtを設定する方法だと思うので、グローバルに呼び出される関数で「埋める」ことができます。これが私が内部で試していることです(plugin)app.js
:
define(['services/datatables/app', 'services/datatables/datatables.min'], function( app, datatables ) {
function render(parameters) {
...
// the function I want to call
function helloName( name ){
alert( name );
};
// I'm trying to add this function to the global "dataTablesExt"
dataTablesExt.sayHello = helloName;
}
しかし...うまくいきません。私はいつも得ています:
dataTablesExt.sayHello is not a function
質問:
誰かが私が間違っていることを指摘できますか? これが不可能な場合、代替手段は何でしょうか。
カスタム イベントをトリガーすることを考えていましたが、イベントと共に渡すオブジェクトを設定する必要があり、その方法がわかりません。
手伝ってくれてありがとう!