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});什么样的条件