2015-08-28 47 views
1

我想用飛鏢JS使用繪圖庫JSXGraph從DART但我有問題。JsxGraph從DART使用DART JS互操作

這是工作的JavaScript代碼

var board = JXG.JSXGraph.initBoard(
    'box', 
    { 
     boundingbox: [-10, 10, 2, -1], 
     axis: true, 
     keepaspectratio: false, 
     showNavigation: false 
    } 
); 
var graph = board.create(
    'functiongraph', 
    [function(x){ return 3*x*x + 5*x + 1;}, -10, 10], 
    {strokeColor: '#ffff00'} 
); 

,您可以嘗試here上的jsfiddle。

我想要做的基本上是identicall的事情,但來自鏢。這是我到目前爲止:

JsObject jsxGraph = context['JXG']['JSXGraph']; 
var board = jsxGraph.callMethod('initBoard', [ 
    'box', 
    new JsObject.jsify({ 
    'boundingbox': [-10, 10, 2, -1], 
    'axis': true, 
    'keepaspectratio': false, 
    'showNavigation': false 
    }) 
]); 
var graph = board.callMethod('create', [ 
    'functiongraph', 
    [(x){return 3*x*x + 5*x + 1;}, -10, 10], 
    new JsObject.jsify({'strokeColor': '#ffff00'}) 
]); 

我得到了繪圖區和座標軸,但我無法得到實際的繪圖線。取而代之的是在控制檯上的錯誤:Uncaught TypeError: this.Y is not a function

可能有人,請點我什麼,我可能做錯了什麼?我懷疑這是關於回調函數的東西,但我真的不知道是什麼。

回答

1

有一個jsify缺少代碼:

JsObject jsxGraph = context['JXG']['JSXGraph']; 
var board = jsxGraph.callMethod('initBoard', [ 
    'box', 
    new JsObject.jsify({ 
    'boundingbox': [-10, 10, 2, -1], 
    'axis': true, 
    'keepaspectratio': false, 
    'showNavigation': false 
    }) 
]); 
var graph = board.callMethod('create', [ 
    'functiongraph', 
    new JsObject.jsify([(x){return 3*x*x + 5*x + 1;}, -10, 10]}, 
    new JsObject.jsify({'strokeColor': '#ffff00'}) 
]); 
+0

謝謝!這不是唯一的事情。我幾乎把我的頭撞在鍵盤上。出於某種原因,在鏢,回調函數必須有兩個參數,其中第一個實際持有的''x''值,另一個是有意義的布爾我不知道的,JSXGraph甚至文檔中則不談第二個參數。 – zegkljan