VisualForce, Apex: Repeat, для обновления массива Javascript - PullRequest
4 голосов
/ 04 марта 2011

это расширение вопроса, который я задал на платах разработчиков Salesforce, который не получил особого внимания:

У меня есть страница VisualForce, которая требует частых изменений для загрузки новой информации из контроллера и встраивания этогоинформация в массив Javascript для дальнейшего использования.

Curent решение: r Я успешно использовал VisualForce 'Browser Technologies', как описано здесь (в вики): http://wiki.developerforce.com/index.php/Using_Browser_Technologies_in_Visualforce_-_Part_1

Я окружаюJavascript array.push с рекомендуемыми тегами:

<apex:repeat value="{!Object}" var="objects">       
    d.push( {
               element1: "{!objects.id}"            
    })
</apex:repeat>

Проблема: Массив заполняется правильно, когда заполняется обновление всей страницы, и когда я использую «раскрывающийся список» для изменения фильтра объекта (вконтроллер), DOM обновляется (я вижу новую информацию, размещаемую на странице),

В конечном счете, однако, массив Javascript не изменяет свои значения, если я не вызову обновление на всей странице, чтосвоего рода побеждает частичное обновление и является шоком для системы для пользователей.

Этот «необходимый пост»проблема не была проблемой раньше, и даже когда я напрямую вызываю функцию Javascript, которая содержит этот массив массивов после обновления DOM, массив Javascript не изменяется (поэтому я предполагаю, что он загружается один раз в зависимости от того, что находится вDOM, когда страница изначально отправляется обратно и не может быть изменена.

Мысли?

1 Ответ

5 голосов
/ 16 марта 2011

Если вы хотите контролировать, когда ваш массив обновляется, оберните его в выходную панель и поместите его идентификатор в атрибут rerender того, что вызывает необходимость обновления данных.Я должен был использовать это ранее, чтобы заново подключить некоторые пользовательские входные прослушиватели jQuery, когда каждый домен был повторно обновлен.

<apex:commandButton action="{!something}" rerender="scriptPanel"/>
<apex:outputPanel id="scriptPanel>
  <script>
     d = new Array();
     <apex:repeat value="{!objects}" var="object">
       d.push({
           element1: "{!objects.id}"            
       });
     </apex:repeat>
  </script>
</apex:outputPanel>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...