Класс Sys.Observer

Добавляет функциональные возможности обновления и управления в целевые объекты, такие как массивы, элементы DOM и объекты.

Пространство имен: Sys

Наследования: отсутствуют

Sys.Observer.addPropertyChanged(targetObject, myHandler);

Имя

Описание

Метод Sys.Observer.add

Добавляет элемент в коллекцию наблюдаемым способом.

Метод Sys.Observer.addCollectionChanged

Добавляет обработчик событий в целевой объект.

Метод Sys.Observer.addEventHandler

Добавляет в целевой объект наблюдаемый обработчик событий.

Метод Sys.Observer.addPropertyChanged

Добавляет в целевой объект обработчик событий propertyChanged.

Метод Sys.Observer.addRange

Добавляет элементы в коллекцию наблюдаемым способом.

Метод Sys.Observer.beginUpdate

Начинается процесс обновления целевого объекта.

Метод Sys.Observer.clear

Очищает массив его элементов наблюдаемым способом.

Метод Sys.Observer.endUpdate

Заканчивает процесс обновления целевого объекта.

Метод Sys.Observer.insert

Вставляет элемент по указанному индексу наблюдаемым способом.

Метод Sys.Observer.isUpdating

Указывает, что целевой объект обновляется.

Метод Sys.Observer.makeObservable

Делает объект непосредственно наблюдаемым путем добавления к нему наблюдаемых методов.

Метод Sys.Observer.raiseCollectionChanged

Создает событие collectionChanged.

Метод Sys.Observer.raiseEvent

Вызывает наблюдаемое событие для целевого объекта.

Метод Sys.Observer.raisePropertyChanged

Вызывает событие уведомления propertyChanged.

Метод Sys.Observer.remove

Удаляет первое вхождение элемента из массива наблюдаемым способом.

Метод Sys.Observer.removeAt

Удаляет элемент с указанным индексом из массива наблюдаемым способом.

Метод Sys.Observer.removeCollectionChanged

Удаляет обработчик событий collectionChanged из целевого объекта.

Метод Sys.Observer.removePropertyChanged

Удаляет обработчик событий propertyChanged из целевого объекта.

Метод Sys.Observer.removeEventHandler

Удаляет наблюдаемый обработчик событий из целевого объекта.

Метод Sys.Observer.setValue

Задает свойство или поле в целевом объекте наблюдаемым способом.

Свойство Sys.Observer.isUpdating

Получает логическое значение, указывающее, обновляется ли целевой объект.

Класс Sys.Observer основан на шаблоне Observer. Класс Sys.Observer поддерживает список требуемых зависимых ячеек (наблюдателей) в отдельном объекте (субъекте). Все методы, содержащиеся в классе Sys.Observer, являются статическими.

Для использования с классом Sys.Observer объект должен быть объектом, массивом или элементом DOM.

В следующем примере показано объявление объекта Observer и привязка его к объекту DataView.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>  
  <title>Linked DataViews</title>
  <link href="styles/list.css" rel="stylesheet" type="text/css" />
  <script type="text/javascript" 
      src="../MicrosoftAjax/MicrosoftAjax.debug.js"></script>
  <script type="text/javascript" 
      src="../MicrosoftAjax/MicrosoftAjaxTemplates.debug.js"></script>

  <script type="text/javascript">
    var imageData = [
      { Name: "Crashing water", Description: "A splash of waves captured." },
      { Name: "Dazed", Description: "Mid-day heat?" },
      { Name: "Close Zoom on Giraffe", Description: "Closeup of a Giraffe at Wild Animal Park." },
      { Name: "Pier", Description: "A pier in Morro Bay." },
      { Name: "Seagull reflections", Description: "Seagulls at peace." },
      { Name: "Spain", Description: "In Balboa Park, in downtown San Diego." },
      { Name: "Sumatran Tiger", Description: "Restful." }
    ];

  // Make the data collection observable.
  Sys.Observer.makeObservable(imageData);

    function moveUp(sender) {
      var nameList = $find("names");

       // Find the DataView item that the button was in.
      var item = nameList.findContext(sender);
      var index = item.index;
      var dataItem = item.dataItem;
      var newIndex = index > 0 ? index - 1 : imageData.length;

      // Move data item up one, which invokes an observer.
      imageData.beginUpdate();
      imageData.remove(dataItem);
      imageData.insert(newIndex, dataItem);
      imageData.endUpdate();
    }
  </script>
</head>

<body xmlns:dataview="javascript:Sys.UI.DataView" xmlns:sys="javascript:Sys">
  <div class="title">Names:</div>

  <ul class="sys-template list" id="names"
      sys:attach="dataview"
      dataview:data="{{ imageData }}"
      dataview:initialselectedindex="0"
      dataview:selecteditemclass="selecteditem"
      dataview:sys-key="nameList"
  >
    <li sys:command="select">
      <button onclick = "moveUp(this)">↑</button>
      <span>{{ Name }}</span>
    </li>
  </ul>

  <div class="title">Descriptions:</div>

  <ul class="sys-template list"
      sys:attach="dataview"
      dataview:data="{{ imageData }}"
      dataview:selecteditemclass="selecteditem"
      dataview:selectedindex="{binding selectedIndex, source=nameList}"
  >
    <li sys:command="select">{{ Description }}</li>
  </ul>
</body>
</html>
Показ: