Data binding 聚合dom绑定模板中同级元素之间的数据绑定

Data binding 聚合dom绑定模板中同级元素之间的数据绑定,data-binding,binding,polymer,polymer-2.x,Data Binding,Binding,Polymer,Polymer 2.x,我有一个模板,包含两个元素——一个是按钮,另一个是列表。加载列表时(它的加载属性为真),按钮活动属性应设置为假,反之亦然 我无法使他们之间的联系发挥作用。当然,我可以从整个过程中创建一个新元素,但如果可能的话,我宁愿避免它 这是我的模板: <dom-bind id="messageListScreen"> <template> <paper-progress-button on-click="fetchNewMessages" active=

我有一个
模板,包含两个元素——一个是按钮,另一个是列表。加载列表时(它的
加载
属性为
),按钮
活动
属性应设置为
,反之亦然

我无法使他们之间的联系发挥作用。当然,我可以从整个过程中创建一个新元素,但如果可能的话,我宁愿避免它

这是我的
模板:

<dom-bind id="messageListScreen">
    <template>
        <paper-progress-button on-click="fetchNewMessages" active="[[!loading]]" active-text="Refresh" inactive-text="Refreshing..." raised></paper-progress-button>
        <message-grid id="grid" loading="{{loading}}"></message-grid>
    </template>
</dom-bind>

使用上述代码,不会发生任何事情。如果我这样做

<script>
    document.addEventListener("WebComponentsReady", function(event){
        let self = document.getElementById('messageListScreen');
        self.loading = self.$.grid.loading;
    });
</script>

文档。添加事件列表器(“WebComponentsReady”,函数(事件){
让self=document.getElementById('messageListScreen');
self.load=self.$.grid.load;
});
self.loading
确实获得了
grid.loading
的值,但是当
grid.loading
的值改变时,
self.loading
的值保持不变


是否有任何方法可以绑定
网格的值。使用
加载到
活动属性?

您应该使用双向绑定

notify:true
添加到
message grid
中的
loading
属性中,并通过
this.set('loading',false)
(而不是
this.loading=false
)在
message grid
中设置加载

messageListScreen
中还应该有一个名为
load
的属性。您可能有,您不需要它,但它对于文档来说很好



另一件事是,如果布尔属性存在,则它们始终为真,因此无论属性具有什么值(真| |假),加载在这两种情况下都始终为真。将布尔值改为数字(int),其中1为真,0为假。

您应该使用双向绑定

notify:true
添加到
message grid
中的
loading
属性中,并通过
this.set('loading',false)
(而不是
this.loading=false
)在
message grid
中设置加载

messageListScreen
中还应该有一个名为
load
的属性。您可能有,您不需要它,但它对于文档来说很好



另一件事是,如果布尔属性存在,则它们始终为真,因此无论属性具有什么值(真| |假),加载在这两种情况下都始终为真。将布尔值改为数字(int),其中1为true,0为false。

尝试在
WebComponentsReady
侦听器外部初始化加载属性(即
document.querySelector('messageListScreen')。加载
)。这是您的示例明显偏离官方文档()的唯一细节。@craPkit似乎仍然不起作用。。。我以前看过那个官方文档的例子,但它们的数据绑定只是“单向的”,因为它只设置一次,然后再也不会更改。请记住,这是我正在努力解决的双向绑定问题。请尝试在
WebComponentsReady
侦听器之外初始化加载属性(即
document.querySelector('messageListScreen')。加载
)。这是您的示例明显偏离官方文档()的唯一细节。@craPkit似乎仍然不起作用。。。我以前看过那个官方文档的例子,但它们的数据绑定只是“单向的”,因为它只设置一次,然后再也不会更改。记住,这是我正在努力解决的双向绑定。太好了,
notify:true
成功了!不确定布尔属性在存在时始终为真是什么意思?我在属性声明中将加载初始化为
false
,然后由
设置。布尔值在标记中设置,就好像存在booleanname一样,将布尔值设置为true。如果不存在,则将其设置为false。太好了,
notify:true
成功了!不确定布尔属性在存在时始终为真是什么意思?我在属性声明中将加载初始化为
false
,然后由
设置。布尔值在标记中设置,就好像存在booleanname一样,将布尔值设置为true。如果不存在,则将其设置为false。