Отображение диалогового окна jquery UI после нажатия на форму бонсай

Привет у меня есть этот код

$(function() {
  bonsai.run(document.getElementById('movie'), {
   code: function() {
     var rect= new Rect(0, 0, 100, 100);
     rect.on('multi:pointerdown', function(e) {
     $("#dialog-form").dialog("open");
     });
   },
   width: 500,
   height: 400,
  });
});

Когда я нажимаю на мой прямоугольник, у меня появляется эта ошибка:

ReferenceError: $ не определено

Как я могу получить ссылку на JQuery?

3 ответа

BonsaiJS создает новый контекст выполнения (часто веб-работник) и код, который вы передаете внутри bonsai.run выполняется в другой области, где jQuery недоступен. Подробности о том, как BonsaiJS выполняет код, можно найти здесь.

Но чтобы решить вашу проблему, вы можете пообщаться с так называемым контекстом BonsaiJS:

$(function() {
  var movie = bonsai.run(document.getElementById('movie'), {
    // note: this function will be stringified and sent to the runner context
    code: function() {
      var rect= new Rect(0, 0, 100, 100).fill('red').addTo(stage);
      rect.on('multi:pointerdown', function(e) {
        // this is how you would pass data with your message
        stage.sendMessage('openDialog', {
          id: '#dialog-form'
        });
        // no data:
        // stage.sendMessage('openDialog', {});
      });
    },
    width: 500,
    height: 400,
  });
  movie.on('load', function() {
    movie.on('message:openDialog', function(data) {
      $(data.id).dialog("open");
    });
  });
});
  • Убедитесь, что переменная $ не перезаписана переменной Jquery в ядре jquery.

  • Порядок загрузки скрипта важен, запускайте скрипт после загрузки jQuery.

Может быть, вы вызываете эту функцию до включения JQuery Javascript? Сначала поместите ссылки на сценарии JQuery.

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