Класс Sys.Observer
Добавляет функциональные возможности обновления и управления в целевые объекты, такие как массивы, элементы DOM и объекты.
Пространство имен: Sys
Наследования: отсутствуют
Sys.Observer.addPropertyChanged(targetObject, myHandler);
Члены
Имя |
Описание |
---|---|
Добавляет элемент в коллекцию наблюдаемым способом. |
|
Добавляет обработчик событий в целевой объект. |
|
Добавляет в целевой объект наблюдаемый обработчик событий. |
|
Добавляет в целевой объект обработчик событий propertyChanged. |
|
Добавляет элементы в коллекцию наблюдаемым способом. |
|
Начинается процесс обновления целевого объекта. |
|
Очищает массив его элементов наблюдаемым способом. |
|
Заканчивает процесс обновления целевого объекта. |
|
Вставляет элемент по указанному индексу наблюдаемым способом. |
|
Указывает, что целевой объект обновляется. |
|
Делает объект непосредственно наблюдаемым путем добавления к нему наблюдаемых методов. |
|
Создает событие collectionChanged. |
|
Вызывает наблюдаемое событие для целевого объекта. |
|
Вызывает событие уведомления propertyChanged. |
|
Удаляет первое вхождение элемента из массива наблюдаемым способом. |
|
Удаляет элемент с указанным индексом из массива наблюдаемым способом. |
|
Удаляет обработчик событий collectionChanged из целевого объекта. |
|
Удаляет обработчик событий propertyChanged из целевого объекта. |
|
Удаляет наблюдаемый обработчик событий из целевого объекта. |
|
Задает свойство или поле в целевом объекте наблюдаемым способом. |
|
Получает логическое значение, указывающее, обновляется ли целевой объект. |
Заметки
Класс 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>