我有这样的javascript代码。在里面我有一个init()函数,在该函数中我有一个选项JSON对象,在该对象中我有一个定义为objectselected()的函数。我如何在按钮点击事件中调用该函数
我试过像这样的WorkFlow.init()。options.Objectselected()但是它不起作用,
var WorkFlow = {
connectionData: [],
selectedTouchpoints: [],
init: function () {
var options = {
palleteId: "myPaletteElement",
elementId: "playAreaContainer",
TextStoreList: ['One', 'Two', 'Three'],
LinkTextStoreList: $('#drpLinkType option').map(function () {
return this.text;
}).get(),
shapeList: ['RoundedRectangle', 'Circle', 'Rectangle', 'Ellipse', 'Square', 'Diamond', 'Card', 'Database'],
diagramUpdate: function (e) {
},
objectSelected: function (e) {
},
linkUpdate: function (e) {
},
initialize: function () {
}
myGraph = new Graph(options);
options.initialize();
},
}
如何调用该功能。
答案 0 :(得分:0)
你需要返回options
,因为它在init函数的范围内
var WorkFlow = {
connectionData: [],
selectedTouchpoints: [],
init: function () {
var options = {
palleteId: "myPaletteElement",
elementId: "playAreaContainer",
TextStoreList: ['One', 'Two', 'Three'],
LinkTextStoreList: $('#drpLinkType option').map(function () {
return this.text;
}).get(),
shapeList: ['RoundedRectangle', 'Circle', 'Rectangle', 'Ellipse', 'Square', 'Diamond', 'Card', 'Database'],
diagramUpdate: function (e) {
},
objectSelected: function (e) {
},
linkUpdate: function (e) {
},
initialize: function () {
}
myGraph = new Graph(options);
options.initialize();
return options;
},
}
并将其称为WorkFlow.init().objectSelected();
答案 1 :(得分:0)
一种方法是你可以返回选项而不是调用它。
init: function () {
var options = {
...your code..}
return options;
},
并称之为
var options = WorkFlow.init();
options.Objectselected();
答案 2 :(得分:0)
根据Patrick的评论,您需要从options
函数返回init
:
var WorkFlow = {
connectionData: [],
selectedTouchpoints: [],
init: function () {
var options = {
palleteId: "myPaletteElement",
...
options.initialize();
return options;
},
}
答案 3 :(得分:0)
就目前而言,您无法访问options
,因为它是一个本地变量 - 也就是其范围的本地变量。
要访问其内容,您需要从init()
返回。
想一想:
WorkFlow.init()
目前返回undefined
,因为您的init()
不返回任何内容。你试图在jQuery中链接,但这依赖于API总是返回实例。您的路径在init()
找到了死路。
要解决此问题,请init()
返回options
- 或至少要从外部访问的部分内容 - " export"。
所以(基本例子)
init: function() {
var options {
my_func: function() { }, //<-- we want outside access to this
private: 'blah' //<-- this can stay private - leave it out of the export
}
//return an export, exposing only what we need to
return {
my_func: options.my_func
}
}