如何在客户端的 Metawidgets (JavaScript) 中获取和显示更新的域模型?
How to Get and Show Updated Domain Model in Metawidgets (JavaScript) within the Client?
我正在为 javascript 使用 Metawidgets,如果对其进行了任何更改,我想访问并显示更新的域模型,而无需路由回服务器(例如:所有内容都在同一客户端中javascript)。可悲的是,我能找到的每个示例都返回到服务器或插入到框架中。
这是一个显示我在获取更新模型时遇到的问题的示例。更改页面上的值,单击 'display' 并查看控制台 window。请注意它如何仍然显示旧值。
<!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++),页面不会自动反映这一点。
你在这里问了两个问题。我会分开回答。
如何让 Metawidget 将值从小部件保存回域对象?为此,您的代码应如下所示:
display: function(x) {
mw.save();
console.log(this);
}
如何让 Metawidget 使用新值重绘小部件?为此,您的代码应如下所示:
display: function(x) {
this.age++;
mw.buildWidgets();
}
不过,我得说你写这段代码的方式有点奇怪。如果它只是一个用于学习目的的快速示例,那很好,但在生产代码中,您可能希望解耦。
例如,您通常不会定义 .toInspect
内联,并在其上包含直接引用 mw
.
的函数
我正在为 javascript 使用 Metawidgets,如果对其进行了任何更改,我想访问并显示更新的域模型,而无需路由回服务器(例如:所有内容都在同一客户端中javascript)。可悲的是,我能找到的每个示例都返回到服务器或插入到框架中。
这是一个显示我在获取更新模型时遇到的问题的示例。更改页面上的值,单击 'display' 并查看控制台 window。请注意它如何仍然显示旧值。
<!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++),页面不会自动反映这一点。
你在这里问了两个问题。我会分开回答。
如何让 Metawidget 将值从小部件保存回域对象?为此,您的代码应如下所示:
display: function(x) { mw.save(); console.log(this); }
如何让 Metawidget 使用新值重绘小部件?为此,您的代码应如下所示:
display: function(x) { this.age++; mw.buildWidgets(); }
不过,我得说你写这段代码的方式有点奇怪。如果它只是一个用于学习目的的快速示例,那很好,但在生产代码中,您可能希望解耦。
例如,您通常不会定义 .toInspect
内联,并在其上包含直接引用 mw
.