2013-02-20 4 views
1

Я новичок в веб-программировании и, конечно же, в YUI.YUI widgets - динамические обновления

Я попытался использовать наложение, диаграмму и узел-menunav. Хотел бы узнать, есть ли возможность создания этих виджетов с использованием динамических данных, поступающих в формате JSON, и обновления виджетов по мере поступления новых данных?

Для нас все свойства будут занесены в данные JSON с сервера, а затем с использованием этих данных нам нужно отобразить меню, диаграммы, браузер свойств. Теперь я не нахожу, как действовать с этим требованием.

Спасибо.

ответ

1

Невозможно синхронизировать виджеты по умолчанию с помощью Ajax. Единственный виджет, который по умолчанию использует способы обновления своих данных, - это виджетов DataTable. Для остальных и даже для атрибутов DataTable вам нужно сделать это самостоятельно.

Однако, если данные и виджеты достаточно сложны, вам следует рассмотреть возможность использования YUI App Framework. Комбинация моделей и просмотров поможет вам в создании сложных макетов с помощью виджетов. Model даст вам возможность легко привязать атрибуты к бэкэнду JSON, особенно если вы используете RESTful API endpoint. И View предоставит вам инструменты для настройки разметки и реагирования на события.

События модели load и change сообщают вам, когда данные обновляются. Так, на ваш взгляд, вы будете в состоянии реагировать на эти события и установить соответствующие атрибуты виджетов:

var MyView = Y.Base.create('myView', Y.View, [], { 
    initializer: function() { 
    this.get('model').on('change', this._updateWidgets, this); 
    }, 
    _updateWidgets: function() { 
    var model = this.get('model'); 
    this.someWidget.set('someAttr', mode.get('someAttr')); 
    } 
}); 

Но, как я сказал, что не правильный способ сделать это. Вы можете использовать любую технику, которая вам нравится. Рамка приложений - это всего лишь набор базовых компонентов, которые можно использовать для структурирования вашего приложения. Он разработан для гибкости, поэтому он может вместить множество способов его использования. Другие способы могут использовать IO напрямую или использовать DataSources в сочетании с плагинами виджета. Это вопрос со многими правильными ответами.