1

我有这个模板 dom-if 使用 Polymer 1.X,但它不工作。

它应该在 is 时显示 'Loading' 并在requirement.allLoadedis时false显示真实requirement.allLoaded内容true

我在我的测试函数中切换了这个变量的状态。但它不会生效。

//Properties
requirement: {
    type:Object,
    value: {
        allLoaded: false,
        tagsLoaded: false
    }
}
//Test function
_testButton: function(){
    console.log(this.requirement);
    this.requirement.allLoaded = !this.requirement.allLoaded;
    console.log(this.requirement);

},
<div id="modal-content">
    <template is="dom-if" if={{!requirement.allLoaded}}>
        <p>Loading</p>
    </template>
    <template is="dom-if" if={{requirement.allLoaded}}>
        <iron-pages selected="[[selectedTab]]" attr-for-selected="name" role="main">
            <details-tab name="details"></details-tab>
            <bar-chart-tab name="barchart"></bar-chart-tab>
            <live-data-tab name="livedata" shared-info='{{sharedInfo}}'></live-data-tab>
        </iron-pages>
    </template>
</div>

注意:我已经使用此结构在其他项目(使用 Polymer 2)中显示/不显示内容并且它正在工作。

4

2 回答 2

0

只有改变不起作用吗?即它在加载时正确显示?

尝试将更改通知 Polymer: this.requirement.allLoaded = !this.requirement.allLoaded; this.notifyPath('requirement.allLoaded');

于 2018-04-05T09:21:06.653 回答
0

你也可以使用this.set('property.subProperty', value)Observable Changes
在你的情况下,那是this.set('requirement.allLoaded', !this.requirement.allLoaded);

于 2018-04-30T11:00:00.830 回答