Javascript 聚合物事件未触发

Javascript 聚合物事件未触发,javascript,polymer,dom-events,web-component,Javascript,Polymer,Dom Events,Web Component,product-catalog.html /*默认情况下,将此主机中的所有工具栏标题设置为绿色*/ :主机纸卡{ --纸卡头图像:{ 宽度:200px; 高度:350px; 保证金:0自动; }; --纸卡头:{ 字体系列:影响; 文本对齐:居中; }; }; paper-icon-button.pink{ 颜色:var(--paper-pink-500); }; paper-icon-button.blue{ 颜色:var(--纸-浅蓝色-500); }; paper-icon-butto

product-catalog.html


/*默认情况下,将此主机中的所有工具栏标题设置为绿色*/
:主机纸卡{
--纸卡头图像:{
宽度:200px;
高度:350px;
保证金:0自动;
};
--纸卡头:{
字体系列:影响;
文本对齐:居中;
};
};
paper-icon-button.pink{
颜色:var(--paper-pink-500);
};
paper-icon-button.blue{
颜色:var(--纸-浅蓝色-500);
};
paper-icon-button.orange{
颜色:var(--paper-orange-500);
};
纸制按钮车{
字体系列:影响;
};
.黄色按钮{
文本转换:无;
颜色:#eeff41;
};
添加到购物车
聚合物({
是:'产品目录',
特性:{
productId:String,
ISSTANDONALE:布尔值
},
听众:{
“productAddedToCart”:“更新内容”
},
_updateContent:函数(){
console.log(“产品目录更新”);
},
addToCart:function(){
var productId=this.getAttribute('product-id');
var baseUrl=“”;
if(this.cartId){
this.$.AjaxPost.url=baseUrl+this.cartId+'/products';
此.$.AjaxPost.body=
{
id:productId,
申请数量:1
};
}否则{
此.$.AjaxPost.url=baseUrl;
此.$.AjaxPost.body={
产品目录:[
{
id:productId,
申请数量:1
}
]
};
}
这是$.AjaxPost.generateRequest();
},
就绪:函数(){
var productId=this.getAttribute('product-id');
var isStandAlone=this.getAttribute('is-standalone');
如果(独立){
此。$.AjaxGet.url=“”;
这是$.AjaxGet.generateRequest();
}
},
_handleAjaxGetResponse:函数(数据){
var结果=data.detail.response.data;
this.productName=result.name;
var imagesArray=result.photoGallery.images;
对于(var i=0;i
我认为这样做是不可能的(还是我错了?)

元素有不同的路径。 只有当您的元素
购物车按钮
产品目录
的祖先时,这种方法才可能实现

你必须在别的地方处理


e、 g.您的
可以是另一个新组件,监听
productAddedToCart
事件并在
购物车按钮中调用一些公共方法。

我认为这样做是不可能的(或者我错了?)

元素有不同的路径。 只有当您的元素
购物车按钮
产品目录
的祖先时,这种方法才可能实现

你必须在别的地方处理


e、 g.您的
可以是另一个新组件,侦听
productAddedToCart
事件,并在
购物车按钮
组件中调用某些公共方法。

事件侦听器无法工作,因为两个元素处于同一级别。因此,倾听该事件的一种方式是:

// in ready function in cart-button element 
this.listen(window, "productAddedToCart", "_updateContent"); 
//(I don't like this way, but how you structured your elements this should work)

事件侦听器不工作,因为两个元素处于同一级别。因此,倾听该事件的一种方式是:

// in ready function in cart-button element 
this.listen(window, "productAddedToCart", "_updateContent"); 
//(I don't like this way, but how you structured your elements this should work)

是的,这很有效!您认为避免这种解决方案的最佳组件设计是什么?我认为这是解决问题的最实际、最简单的方法。但也许我会为这些元素创建一个容器,尽管这个选项会添加实际上不需要的额外逻辑和额外编程!您认为避免这种解决方案的最佳组件设计是什么?我认为这是解决问题的最实际、最简单的方法。但也许我会为这些元素创建一个容器,尽管该选项会添加实际上不需要的额外逻辑和额外编程。