2014-09-22 102 views
0

我一直在为此工作好几天,没有什么比这更好的了!我有一个应用程序使用cookie进行会话处理。该应用程序使用我在标题中导入的多个自定义元素,其中一些需要使用来自cookie session的信息进行ajax-core调用。问题在于cookie未设置(情况:首次启动),因此,我登录到应用程序,并且必须重新加载页面才能开始获得'core-ajax auto'结果。我不知道如何做一个监听器或如何重新加载所有的自定义元素或如何重新加载特定的核心ajax调用。重新加载自定义元素的聚合物元素或ajax调用

你们有些人有类似的情况?这是解决它的最佳方法?

在此先感谢!

回答

0

我有同样的想法,但如果用户没有登录一段时间,它会在一个不希望的循环(我认为,也许我错了),所以,我最终做了什么?

我有我的Ajax调用,并在响应行动我将文件导入头与一个哑巴功能

if(data.user){ 
    this.importLinks(); 
} else { 
..... 
} 


importLinks: function() { 
    this.createLinkRel('/static/resources/custom-elements/file.html'); 
    this.createLinkRel('/static/resources/custom-elements/log.html'); 
    this.createLinkRel('/static/resources/custom-elements/us.html'); 
    this.createLinkRel('/static/resources/custom-elements/shop.html'); 
}, 


createLinkRel: function (href){ 
    var script = document.createElement('link'); 
    script.rel = 'import'; 
    script.href = href; 
    document.getElementsByTagName('head')[0].appendChild(script); 
} 

感谢你的时间来阅读我的文章和答案!

2

这听起来好像你需要设置core-ajax auto =“false”并延迟查询setTimeout();

您可以通过为聚合物元素指定一个id(即本示例中的ajax)并调用go()来调用聚合物元素中的ajax调用;函数

this.$.ajax.go(); 

要从元素外部调用它,必须首先在元素内部生成函数。

Polymer('custom-element', { 
    doSend: function (event, detail, sender) { 
    this.$.ajax.go(); 
    } 
}); 

然后调用,从你的主js文件与

document.querySelector('custom-element').doSend(); 

所以把所有的一起,延缓查询,你可以使用

setTimeout(function() { 
    document.querySelector('custom-element').doSend(); 
}, 1000); 

称之为核心的去功能在等待1秒后自定义元素内部的ajax。

+0

这并没有完全解决我的问题,但它导致我在几个小时和几个小时没有进展后走上了正确的轨道。谢谢! – 2015-03-13 16:18:47