Javascript 在Polymer 1.0中实现全局变量

Javascript 在Polymer 1.0中实现全局变量,javascript,html,polymer,polymer-1.0,Javascript,Html,Polymer,Polymer 1.0,我试图复制Polymer 0.5文档下一节中的示例,它使用单态模式在Polymer中实现全局变量: 我正在尝试使用Polymer 1.0来实现这一点,但运气不太好 这是我的应用程序全局和我的组件自定义元素的代码。除了Polymer 1.0中的语法略有不同之外,它与上面的链接中的语法相同。e、 g.使用dom模块代替聚合物元件 <dom-module name="app-globals"> <script> (function() {

我试图复制Polymer 0.5文档下一节中的示例,它使用单态模式在Polymer中实现全局变量:

我正在尝试使用Polymer 1.0来实现这一点,但运气不太好

这是我的
应用程序全局
我的组件
自定义元素的代码。除了Polymer 1.0中的语法略有不同之外,它与上面的链接中的语法相同。e、 g.使用
dom模块
代替
聚合物元件

<dom-module name="app-globals">
    <script>
        (function() {
            // these variables are shared by all instances of app-globals
            var values = {
                firstName: 'John',
                lastName: 'Smith'
            }

            Polymer({
                 is: 'app-globals',
                ready: function() {
                    // make global values available on instance.
                    this.values = values;
                }
            });
        })();
    </script>
</dom-module>

<dom-module name="my-component">
    <template>
        <app-globals id="globals"></app-globals>
        <div id="firstname">{{$.globals.values.firstName}}</div>
        <div id="lastname">{{$.globals.values.lastName}}</div>
    </template>
    <script>
        Polymer({
             is: 'my-component',
              ready: function() {
                console.log('Last name: ' + this.$.globals.values.lastName);
              }
    });
    </script>
</dom-module>

(功能(){
//这些变量由app globals的所有实例共享
var值={
名字:“约翰”,
姓:“史密斯”
}
聚合物({
是:'应用程序全局',
就绪:函数(){
//使全局值在实例上可用。
这个值=值;
}
});
})();
{{$.globals.values.firstName}
{{$.globals.values.lastName}
聚合物({
是:'我的组件',
就绪:函数(){
log('Last name:'+this.$.globals.values.lastName);
}
});
用法很简单:

<my-component></my-component>

最初我遇到错误“无法读取未定义的属性“$”。因此,我将
my component
自定义元素中的
div
内容
$.globals.values.firstName
替换为
this.$.globals.values.firstName
(类似地,对于
lastName
字段)

但是,div不显示名字和姓氏。在呈现div时,似乎未设置
this.$.globals.values.firstName
this.$.globals.values.lastName

如果您能提供一些帮助,我们将不胜感激。

下面是一个工作示例

这是一个工作示例


您是否尝试过
此.set('values',values)而不是
this.values=values
console.log()
是否打印值?还有一点,看看你的元素应该做什么。@GünterZöchbauer我不知道铁元素。我会调查的,谢谢!我很确定这是
我想如果你使用polylint()你可以发现这些错误。你有没有尝试过
这个.set('values',values)而不是
this.values=values
console.log()
是否打印值?还有一点,看看你的元素应该做什么。@GünterZöchbauer我不知道铁元素。我会调查的,谢谢!我很确定这是
我认为如果使用polylint()可以捕捉到这些错误。谢谢,这解决了问题,因此标记为正确答案。我还将研究铁元元素作为替代方法。谢谢,这已经解决了问题,因此标记为正确答案。我还将研究铁元元素作为替代方法。
properties: {
          values: {
            type: Object,
            notify: true
          }
        },

        ready: function() {
          // make global values available on instance.
          this.values = {
            firstName: 'John',
            lastName: 'Smith'
          }
        }