0

我正在为 javascript 使用 Metawidgets,如果对其进行了任何更改,我希望访问并显示更新的域模型,而无需路由回服务器(例如:都在同一个客户端 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++),页面不会自动反映这一点。

4

1 回答 1

1

你在这里问两个问题。我将分别回答他们。

  1. 如何让 Metawidget 将小部件中的值保存到域对象中?为此,您的代码应如下所示:

       display: function(x) {
            mw.save();
            console.log(this);
        }
    
  2. 如何让 Metawidget 用新值重绘小部件?为此,您的代码应如下所示:

       display: function(x) {
            this.age++;
            mw.buildWidgets();
        }
    

但是,我应该说您编写此代码的方式有点奇怪。如果它只是一个用于学习目的的快速示例,那很好,但在生产代码中,您可能希望将事物解耦。

例如,您通常不会定义.toInspect内联,并且在其上具有直接引用mw.

于 2015-02-26T21:30:51.867 回答