Я пытаюсь вызвать метод объекта, id которого объявлен и определен внутри другого блока AMDjs. Вот пример кода:Вызов метода объекта из другого блока AMDjs?
первый блок:
require(
[
"dojo/ready",
"dojo/store/Memory", \t \t \t \t
"cbtree/Tree", \t \t \t \t \t \t
"cbtree/model/TreeStoreModel", \t
"dojo/dom-class",
"dojo/domReady",
"dijit/form/CheckBox",
"dojo/domReady!"
],
function
(
ready,
Memory,
Tree,
ObjectStoreModel,
domClass,
CheckBox
)
{
var XTree = function()
{
this.store = new Memory({ data: this.datax() });
this.model = new ObjectStoreModel(
{
store: this.store,
query: { id: "all" },
rootLabel: "xxx",
checkedRoot: true
});
}
XTree.prototype.applyTheTree = function()
{
this.tree = new Tree({ model: this.model, id: "tree00", animation: false }, "treeViewx");
this.tree.startup();
}
XTree.prototype.fire = function()
{
alert('fire');
}
XTree.prototype.datax = function()
{
return [
{ id: 'all', name:'' },
{ id: 'br1', name:'branch 1', parent: 'all' },
{ id: '1', name:'b 1', parent: 'br1' },
{ id: '1', name:'b 2', parent: 'all' }
]
};
var xTree = new XTree();
ready(function()
{
xTree.applyTheTree();
});
return xTree;
});
Я пытаюсь ссылаться на объект из другого блока, как это внутри второго блока:
define([ .. 'XTree' ], function(.. xTree)
{
...
var btnX = document.createElement('input');
btnX.type = 'button';
btnX.value = 'hey';
btnX.style.width = '90px';
btnX.style.height = '25px';
btnX.onclick = function () { xTree.fire() };
...
});
- Почему нажатие кнопки x Дерево «не определено» вместо того, чтобы запускать метод fire()?
Похоже, что по какой-то причине на данный момент я ссылаюсь на блок в своем дополнительном модуле - он дважды передает конструктор. –
Недостающая часть была сама по себе. Работает как шарм! –