Использование jessiecode для обновления объектов jsxgraph

Я пытаюсь использовать Jessiecode для обновления объектов холста. Похоже, я что-то здесь упускаю - скрипка board.create('circle', [p1, 2.0],{visible:board.jc.snippet("counter < 5 || counter > 10", true, 'counter', false)}); а также board.create('text',[1,1,board.jc.snippet(counter,true,'counter',false)]);

В этой скрипке видимое свойство и текст круга в 1,1 не изменяются при нажатии кнопки.

1 ответ

Решение

Это действительно вызов! Основная проблема заключается в том, что JessieCode не разрешен доступ к переменным JavaScript. Это сделано специально: по соображениям безопасности доступ к DOM должен быть заблокирован.

Это означает, counter должна быть переменной JessieCode. Произвольный код JessieCode может быть выполнен с board.jc.parse("code"),
Вот полный пример см. http://jsfiddle.net/a3x5de6t/4/:

var board = JXG.JSXGraph.initBoard('jxgbox', {
    axis: true
});

// Set JessieCode variable `counter`
board.jc.parse("counter = 0;");

var p1 = board.create('point', [-2.0, 2.0]);

// Create `function() {return (counter < 5 || counter > 10) ? true: false; }`
var c1 = board.create('circle', [p1, 2.0],{visible: board.jc.snippet(
        "(counter < 5 || counter > 10) ? true: false", true, '', false)});

// Increase JessieCode variable `counter`
var button = board.create('button',[1, 4, 'increase counter',
    function() {
        board.jc.parse('counter = counter + 1;');
    }
]);

// Create function `function() {return counter; }` 
var t = board.create('text',[1, 1, board.jc.snippet('counter' , true, '', )]);

С наилучшими пожеланиями, Альфред

Другие вопросы по тегам