Как получить и показать обновленную модель домена в мета-виджетах (JavaScript) в клиенте?
Я использую метавиджеты для javascript и хочу получить доступ и показать обновленную модель домена, если в нее были внесены какие-либо изменения, без маршрутизации обратно на сервер (например, все в одном и том же клиентском javascript). К сожалению, каждый пример, который я смог найти, возвращался на сервер или включался в фреймворк.
Вот пример, показывающий мою проблему с получением обновленной модели. Измените значения на странице, нажмите "Показать" и откройте окно консоли. Обратите внимание, как он все еще показывает старые значения.
<!DOCTYPE html>
<html>
<head>
<script src="metawidget-4.1/js/lib/metawidget/core/metawidget-core.min.js" type="text/javascript"></script>
</head>
<body style="font-family:Arial">
<div id="metawidget"></div>
<script type="text/javascript">
var mw = new metawidget.Metawidget( document.getElementById( 'metawidget' ) );
mw.toInspect = {
name: 'X',
age: 40,
display: function(x) {
// This never shows the updated model if the user changes values
console.log(this);
}
};
mw.buildWidgets();
</script>
</body>
</html>
Как я могу заставить Metawidget автоматически отображать обновленную версию объекта домена, если он изменен из кода? Например, если бы мне пришлось увеличивать возраст (например, person.age++ или this.age++ изнутри дисплея), страница автоматически не отражает это.
1 ответ
Вы задаете два вопроса здесь. Я отвечу на них отдельно.
Как мне получить Metawidget для сохранения значений обратно из виджетов в объект домена? Для этого ваш код должен выглядеть так:
display: function(x) { mw.save(); console.log(this); }
Как заставить Metawidget перерисовать виджеты с новыми значениями? Для этого ваш код должен выглядеть так:
display: function(x) { this.age++; mw.buildWidgets(); }
Однако я должен сказать, что то, как вы написали этот код, немного странно. Хорошо, если это всего лишь быстрый пример для целей обучения, но в рабочем коде вы бы хотели отделить вещи.
Например, вы обычно не определяете .toInspect
встроенные и имеют функции, которые непосредственно ссылаются на mw
,