【问题标题】:JsxGraph from Dart using Dart JS interop来自 Dart 的 JsxGraph 使用 Dart JS 互操作
【发布时间】:2015-08-28 08:15:57
【问题描述】:

我正在尝试使用 Dart js 中的绘图库 JSXGraph,但我遇到了问题。

这是有效的 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'}
);

你可以在 jsFiddle 上尝试here

我想做基本上相同的事情,但从飞镖。到目前为止,这是我想出的:

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

请有人指出我可能做错了什么?我怀疑是回调函数的问题,但我真的不知道是什么。

【问题讨论】:

    标签: dart dart-js-interop jsxgraph


    【解决方案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'})
    ]);
    

    【讨论】:

    • 谢谢!但这不是唯一的事情。我差点把头撞在键盘上。出于某种原因,在 dart 中,回调函数必须接受两个参数,其中第一个实际持有 x 值,另一个是布尔值,其含义我不知道,甚至 JSXGraph 的文档也没有说话关于第二个参数。
    猜你喜欢
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 2023-03-20
    • 2016-12-24
    相关资源
    最近更新 更多