Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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
Javascript 聚合物&x2B;Meteor,在blaze#每个环中,无法将对象传递到聚合物网络组件_Javascript_Meteor_Polymer_Meteor Blaze - Fatal编程技术网

Javascript 聚合物&x2B;Meteor,在blaze#每个环中,无法将对象传递到聚合物网络组件

Javascript 聚合物&x2B;Meteor,在blaze#每个环中,无法将对象传递到聚合物网络组件,javascript,meteor,polymer,meteor-blaze,Javascript,Meteor,Polymer,Meteor Blaze,在Polymer中,不与Meteor组合,只需将对象传递给属性,即可将对象传递给Polymer web组件。我在这方面做得很成功。 在这里,我们将“状态”从迭代直接传递到名为 州卡 在自定义聚合元素上设置属性时,聚合元素会在设置元素原型上的值时尝试检测类型并强制转换属性,因此数字就是数字,字符串就是字符串,等等。当你不在另一个聚合物元素中设置这个属性时,事情就变得有点困难了——就像试图用blaze(我想还有其他任何非聚合物引擎)来设置它一样 Polymer最终会在对象文本上运行.toStrin

在Polymer中,不与Meteor组合,只需将对象传递给属性,即可将对象传递给Polymer web组件。我在这方面做得很成功。 在这里,我们将“状态”从迭代直接传递到名为 州卡


在自定义聚合元素上设置属性时,聚合元素会在设置元素原型上的值时尝试检测类型并强制转换属性,因此数字就是数字,字符串就是字符串,等等。当你不在另一个聚合物元素中设置这个属性时,事情就变得有点困难了——就像试图用blaze(我想还有其他任何非聚合物引擎)来设置它一样

Polymer最终会在对象文本上运行
.toString()
,从而生成“[object object]”,而这几乎没有什么用处。幸运的是,polymer允许您将对象作为双引号JSON字符串从外部世界传递进来,就像
JSON.stringify(something)
的结果一样

最直接但不那么优雅的方法是创建一个stringify助手并使用它来设置属性

Template.registerHelper('stringify', function(obj) {
  return JSON.stringify(obj);
});

{{#each things}}
  <my-component something={{stringify this}}></my-component>
{{/each}}
Template.registerHelper('stringify',函数(obj){
返回JSON.stringify(obj);
});
{{{每件事}
{{/每个}}

Template.registerHelper('stringThis',function(){
返回JSON.stringify(this);
});
{{{每件事}
{{/每个}}
另一个选项是在应用程序的某个级别重写
toString
方法。使用meteor的文档转换或
集合帮助程序
包,您可以添加一个只返回JSON.stringify(this)的
toString
方法—如果您在游标上迭代

但是,很难重写
Object.prototype.toString
并执行同样的操作。您将得到循环引用错误,但在将对象(
this
)传递给JSON.stringify之前,似乎有几个库和方法来取消对象的循环。我还没试过这个,但似乎可以用

无论哪种方式,如果属性设置为JSON,它将作为聚合元素中的实际对象提供。您甚至可以在该对象内的嵌套属性上设置观察者


底线-似乎还没有一个完美的方法,所以现在就把对象字符串化。希望有帮助

UI.registerHelper是旧语法,现在是Template.registerHelper。非常感谢Greg!!!阅读你的回复,我意识到我在其他SO帖子上看到了你答案的“部分”,但并没有像你那样把整个概念放在一起。我得到了stringify的概念。然而,在定制的Polymer元素中,我得到了stringized的JSON对象,但是,如何让它绑定到Polymer元素中的HTML元素呢。例如,如果我的Polymer元素具有属性:attributes=“stateObj”,并且元素的模板具有{{stateObj.name},则它似乎不会转换为对象。再次,非常非常感谢@ChrisRussi尝试将stateObj初始化为元素构造函数中的空对象。您可能可以使用发布对象(而不是在属性中声明),或者在创建的回调中使用。不是积极的,但值得一试shot@Greg ... 啊对!!,事实上,我曾经做过,然后把它移除了。我完全知道你在说什么。我今晚到家后会试试的。我非常感谢你的回答。我一直在努力学习1)学习流星2)学习聚合物3)结合两者。。。这确实增加了努力的程度。我有预感,这会奏效的。谢谢格雷格@格雷格。。。令人惊叹的!它现在正在运作。我加了:Polymer('state-card',{stateObj:{},…,这就成功了。我非常感谢你们的帮助。现在,我想起了我在最初的Differential Polymer演示视频中看到你们的地方……你们真是太棒了。
Template.registerHelper('stringThis', function() {
  return JSON.stringify(this);
});

{{#each things}}
  <my-component something={{stringThis}}></my-component>
{{/each}}