如何推迟聚合物结合?

时间:2015-03-30 23:35:27

标签: javascript polymer

所以,前言 - 我来自使用Angular。在Angular中,你倾向于使用很多承诺。显然,Polymer不会阻止您使用外部promise库,但它显然是围绕经典事件触发/回调构建的。所以,我基本上试图找到一种方法,只有在包装元素达到条件时才在元素中运行逻辑。

我有一个名为Secure-Page的元素。此元素可以操作外部会话对象以告知用户是否已登录,如果用户在到达时未登录,则会执行登录对话框功能。如果用户试图在不登录的情况下访问它们,那么这个元素就是为客户端的门页创建的。基本上它只是防止发送一堆失败的ajax请求......理论上。

在实践中,我找不到一种简单的方法来阻止包装元素加载/触发。我认为使用条件绑定模板会起作用,但无论模板是否呈现,似乎都会调用readyattached等回调。

示例代码:

// in secure-page.html
 <template if="{{session.UserId && session.token}}">
  <content>
  </content>
 </template>

// in my-account.html
  <ac-crud id="http"
      session="{{session}}"
      endpoint="http://localhost:3000/api/v1/users"
      on-get-complete="{{updateData}}"
      on-put-complete="{{handleSuccess}}"
      ></ac-crud>
....
<script>
Polymer('my-account', {

 // even if I try any of the other callbacks all of them
 // are called even if the element is not rendered
 ready: function() {
   this.$.http.get({ params: { id: this.session.UserId } });
 }

...     

我没有包含整个脚本文件,但我不认为其余的是相关的。

TLDR:我认为我需要一个类似于ready的回调,这是在元素的模板实际绑定时触发的。 (假设我认为所谓的条件绑定模板在满足条件之前实际上不会绑定,这是正确的)

0 个答案:

没有答案