moodle 的 AMD 模块 question_type

AMD module for moodle question_type

我正在尝试将一些 JS 添加到我的问题类型中...所以我读到应该使用 AMD 模块,并且不再鼓励使用 YUI 模块。 我在以下示例中做了所有事情:https://docs.moodle.org/dev/Javascript_Modules 但是当我尝试从 php:

调用我的模块时
$this->page->requires->js_call_amd('block_overview/helloworld','makeItBlue');

我在控制台中遇到错误(在 google chrome):

No define call for block_overview...

我也试过:

$this->page->requires->js_call_amd('qtype_mytype/helloworld','makeItBlue');

但我遇到了同样的错误...

Folder structure:
question/type/mytype/
                   |--amd/
                        |--src
                             |--helloworld.js
                        |--build
                               |--helloworld.min.js

第一个肯定行不通,因为它会在 blocks/overview/amd/* 中查找 javascript 文件 'helloworld.js'.

第二个应该可以工作,除了在示例中,函数 'makeItBlue' 未导出 - 即它在模块外部不可用。

唯一可用的函数是模块返回的对象的一部分。在示例中,导出的对象称为 'greeting',它包含的函数是 'formal' 和 'informal'。这些并没有真正做任何非常有用的事情,但它们可以从模块外部调用。

查看此博客附带的 PDF post:http://learn1.open.ac.uk/mod/oublog/viewpost.php?post=164813 非常好的介绍在 Moodle 2.9+ 中使用 AMD 模块。