Javascript 有条件地添加聚合物元素

Javascript 有条件地添加聚合物元素,javascript,polymer,Javascript,Polymer,我想在某些条件下添加聚合物元素。必须从服务器异步请求该条件 request().done(function(msg){//msg is the answer from the server}); 我在Polymer文档中找到了dom if。如果理解正确,则必须将属性或计算属性传递给If条件 <template is="dom-if" if="{{...}}></template> 有人能帮我吗 提前谢谢 致以最良好的祝愿, Christian如果处理服务器响应的方法位

我想在某些条件下添加聚合物元素。必须从服务器异步请求该条件

request().done(function(msg){//msg is the answer from the server});
我在Polymer文档中找到了dom if。如果理解正确,则必须将属性或计算属性传递给If条件

<template is="dom-if" if="{{...}}></template>
有人能帮我吗

提前谢谢

致以最良好的祝愿,
Christian

如果处理服务器响应的方法位于包含dom If的元素的上下文感知中,则可以在其中设置绑定到dom If的属性

在包含dom if的元素中声明一个属性,并在默认情况下将其设置为false

//properties declaration...
showElement : {
    type:Boolean,
    value: false
}
//others properties and end of properties declaration...
如果要绑定到此属性,则需要声明dom

<template is="dom-if" if="{{showElement}}">...</template>
最后一部分假设处理函数的上下文是包含属性和dom if的元素的上下文


如果不是这样,我需要更多关于如何激发和处理请求的详细信息,以扩展此响应,并解释如何检索它。

如果处理服务器响应的方法位于包含dom If的元素的上下文中,则可以设置绑定到dom If的属性

在包含dom if的元素中声明一个属性,并在默认情况下将其设置为false

//properties declaration...
showElement : {
    type:Boolean,
    value: false
}
//others properties and end of properties declaration...
如果要绑定到此属性,则需要声明dom

<template is="dom-if" if="{{showElement}}">...</template>
最后一部分假设处理函数的上下文是包含属性和dom if的元素的上下文


如果不是这样,我需要更多关于如何激发和处理请求的详细信息,以扩展此响应并解释如何检索它。

如果服务器返回布尔值,那么它很简单。您只需执行以下操作:

这意味着,无论何时从服务器获得响应,都必须将其设置为
foo
属性:
this.set(“foo”,response…)
。这是第一步。您并没有提到何时向服务器发出请求,或者多久发出一次请求。无论如何,你可以这样做,例如,当屏幕加载或其他任何时候。那么异步在这里就不是问题了

使用行为是好的。但它不应返回,而应仅将值设置为属性

摘要:当页面被加载(或输入被更改,或用户按下按钮…)时,您在服务器上调用request->wait for response->当响应到来时,将其设置为(例如)
foo
property->就是这样

最后一点,
foo
的默认值应该可能是
false

与上面提到的Arfost几乎相同。他是对的,那么问题在哪里呢

编辑

根据您的评论,您总是得到一个ID,它根据ID的值绑定到服务器的一个响应。例如,如果ID为5,则其他一些属性为
true
,并且该属性随ID的值而变化

因此,不需要任何额外的代码,您可以像这样做:

showElement: function(id, property, value) {
  if(value == undefined) {
    request(id).done(function(answer) {
      this.set(property, answer); 
    }
  }
}
而绑定将类似于:

<template is="dom-if" if="{{showElement(someID, 'foo1', foo1)}}"></template>

假设属性
foo1
不存在。你不能申报。这是最重要的,因为有条件的
if(value==undefined)
否则它永远不会被调用

仅解释一下showElement(someID'foo1',foo1):
'foo1'
(第二个参数)表示应该存储来自服务器的响应的属性的名称。 由于绑定的原因,
foo1
(第三个参数)在这里。多亏了这一点,
domif
将在属性
foo1
更改时得到注意


我没有测试它,但我认为它可能有效

如果服务器返回布尔值,那么它很简单。您只需执行以下操作:

这意味着,无论何时从服务器获得响应,都必须将其设置为
foo
属性:
this.set(“foo”,response…)
。这是第一步。您并没有提到何时向服务器发出请求,或者多久发出一次请求。无论如何,你可以这样做,例如,当屏幕加载或其他任何时候。那么异步在这里就不是问题了

使用行为是好的。但它不应返回,而应仅将值设置为属性

摘要:当页面被加载(或输入被更改,或用户按下按钮…)时,您在服务器上调用request->wait for response->当响应到来时,将其设置为(例如)
foo
property->就是这样

最后一点,
foo
的默认值应该可能是
false

与上面提到的Arfost几乎相同。他是对的,那么问题在哪里呢

编辑

根据您的评论,您总是得到一个ID,它根据ID的值绑定到服务器的一个响应。例如,如果ID为5,则其他一些属性为
true
,并且该属性随ID的值而变化

因此,不需要任何额外的代码,您可以像这样做:

showElement: function(id, property, value) {
  if(value == undefined) {
    request(id).done(function(answer) {
      this.set(property, answer); 
    }
  }
}
而绑定将类似于:

<template is="dom-if" if="{{showElement(someID, 'foo1', foo1)}}"></template>

假设属性
foo1
不存在。你不能申报。这是最重要的,因为有条件的
if(value==undefined)
否则它永远不会被调用

仅解释一下showElement(someID'foo1',foo1):
'foo1'
(第二个参数)表示应该存储来自服务器的响应的属性的名称。 由于绑定的原因,
foo1
(第三个参数)在这里。多亏了这一点,
domif
将在属性
foo1
更改时得到注意


我没有测试它,但我认为它可能有效

您可以从服务器获得什么类型的条件?格式是什么?你想做的事情有点复杂。如果没有更多的信息,几乎不可能回答我将ID作为字符串传递给方法调用。服务器根据ID决定是否显示元素,返回布尔值。server.request(“元素id”).done(函数(anser){showElement=answer});什么样的条件