Окно Ajax (всплывающее окно) Использование библиотеки Google Closure - PullRequest
2 голосов
/ 15 июля 2011

Существует ли какой-либо класс (например, goog.ui.dialog), который позволяет мне показать диалог, содержимое которого может быть ajax извлечено из другого файла?

  • Является ли goog.ui.Dialog подходящим классом для этой цели?
  • Должен ли я реализовать его другими фундаментальными классами, такими как good.net.XHR и goog.ui.Popup?

1 Ответ

2 голосов
/ 15 июля 2011

Вы можете расширить goog.ui.dialog и получить содержимое.

Простой пример, который может вам помочь:

my.ui.Dialog = function(opt_iframe) {
  goog.ui.Dialog.call(this, null, opt_iframe);

  this.xhr_  = new goog.net.XhrIo();
  this.xhr_.addEventListener(goog.net.EventType.COMPLETE,
                             this.onComplete_, false, this);

  goog.events.listen(this, goog.ui.Dialog.EventType.SELECT,
                     this.dispatch_, false, this);
};
my.ui.Dialog.prototype.buildWindow_ = function (responseJson) {
  this.setTitle(responseJson.title);
  this.setContent(responseJson.content);
  this.setButtonSet(eval(responseJson.buttons));
};
my.ui.Dialog.EventType = {
  'COMPLETE': 'complete'
};
my.ui.Dialog.prototype.onComplete_ = function (event) {
var json = this.xhr_.getResponseJson ()
    this.buildWindow_ (json);
    this.reposition ();
};
my.ui.Dialog.prototype.send = function (uri, method, post_data) {
  this.xhr_.send(uri, method, post_data, null, {'X-DIALOG':'AJAX'});
};
goog.inherits (my.ui.Dialog, goog.ui.Dialog);

Это использует ответ в json для построения пользовательского интерфейса. Вот как:

{"buttons": "goog.ui.Dialog.Buttons.OK_CANCEL", 
 "content": "<html><body><h1>Hello</h1></body></html>", 
 "title": "Hello World"}

Этот пример не может работать напрямую: /

...