Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用聚合标记JSON对象中的更改,并从javascript传递数据,然后呈现一些子元素_Javascript_Json_Object_Polymer_Rerender - Fatal编程技术网

如何使用聚合标记JSON对象中的更改,并从javascript传递数据,然后呈现一些子元素

如何使用聚合标记JSON对象中的更改,并从javascript传递数据,然后呈现一些子元素,javascript,json,object,polymer,rerender,Javascript,Json,Object,Polymer,Rerender,我正在生成一个带有随机X和O的JSON,并尝试使用polymer中的自定义元素将它们绘制到一个简单的网格中。当我第一次打开页面时,一切都正常运行,每次我都会看到不同的网格。我还在index.html页面上添加了一个按钮,该按钮使用一组新的X和O重新生成JSON,但polymer元素不会标记事件更改或使用新数据更新其子元素 这似乎只是我的JSON对象的问题,因为如果我将其更改为字符串,每次都会收到更改通知 我已经编写了一个简单的“forceDB.js”脚本,生成JSON并将其传递给polymer元

我正在生成一个带有随机X和O的JSON,并尝试使用polymer中的自定义元素将它们绘制到一个简单的网格中。当我第一次打开页面时,一切都正常运行,每次我都会看到不同的网格。我还在index.html页面上添加了一个按钮,该按钮使用一组新的X和O重新生成JSON,但polymer元素不会标记事件更改或使用新数据更新其子元素

这似乎只是我的JSON对象的问题,因为如果我将其更改为字符串,每次都会收到更改通知

我已经编写了一个简单的“forceDB.js”脚本,生成JSON并将其传递给polymer元素,其中包含
.setAttribute('layout',data)
如何通知对polymer的更改并更新polymer脚本的所有子元素

JSON对象如下所示

let data = {
  "a1":"",
  "a2":"",
  "a3":"",
  "b1":"",
  "b2":"",
  "b3":"",
  "c1":"",
  "c2":"",
  "c3":""
};
元素的聚合物脚本面看起来像这样

enter code here
<script>
  Polymer({
    is:'grid-layout',
    properties:{
      layout: {
        type: Object,
        reflectToAttribute : true
      },
      observers: 'layoutChanged(layout.*)'
    },
    setLayout: function(newdb){
    console.log('new - ' + JSON.stringify(newdb));
    this.set('layout', newdb);
    },
    layoutChanged: function(changedthing){
    alert("Layout Changed!");
    },
  });
</script>
在此处输入代码
聚合物({
is:“网格布局”,
特性:{
布局:{
类型:对象,
reflectToAttribute:真
},
观察员:“布局已更改(布局。*)”
},
setLayout:函数(newdb){
log('new-'+JSON.stringify(newdb));
此.set('layout',newdb);
},
布局更改:功能(更改内容){
警报(“布局已更改!”);
},
});

我想我可能在聚合物中遗漏了一个关键点,或者我做错了什么。但我有一个简单的X和O的游戏,我正在开发它,试图掌握聚合数据绑定的原理,但似乎在哪里还不够。

是否布局属性需要:

notify: true

查看如何将layout属性绑定到HTML中的子元素可能会有所帮助。

是否layout属性需要:

notify: true

查看如何将layout属性绑定到HTML中的子元素可能会有所帮助。

我尝试使用notify:true,但这似乎不起作用。我使用了
document.getElementById(…).setLayout(数据),其中
数据
是一组新的X和O的JSON对象。我通过
.setLayout({a1:data.a1,a2:data.a2…})
隐式地将每个键值设置为一个参数,找到了一个解决方法。但是,这仍然没有意义,因为完整的JSON不会呈现,但是对每个值的隐式更改会呈现。您是否使用html中的括号将布局绑定到子元素,或者只是在每次更改时使用set手动设置属性?我尝试使用notify:true,但是这似乎不起作用。我使用了
document.getElementById(…).setLayout(数据),其中
数据
是一组新的X和O的JSON对象。我通过
.setLayout({a1:data.a1,a2:data.a2…})
隐式地将每个键值设置为一个参数,找到了一个解决方法。但是,这仍然没有意义,因为完整的JSON不会呈现,但是对每个值的隐式更改会呈现。您是否使用html中的括号将布局绑定到子元素,或者只是在每次更改时使用set手动设置属性?