0

我仔细阅读了这些线程

Polymer 1 嵌套的 dom-if 在 dom-repeat 中不会在数据更改时更新

如何在 Polymer 中动态地将元素附加到 dom-if?

如何在自定义元素中访问 dom-if 的内容?

这可能与我的问题有关,但如果我能做我想做的事以及如何做,我没有找到任何线索。

在我的公司,有几个流程,每个流程对应每个业务流程,流程的每个步骤都是一个屏幕,编码为 Polymer 1 Web 组件。它们都被包裹在定义路由的根 Polymer 组件中。

一个简单的例子是:

my-root-component:

<dom-module id="my-root-component">
    <template>
        <first-obrigatiory-page which-route={aValueReturnedFromFirstComponent}></first-obrigatiory-page>
        <template is="dom-if" if="[[_isTrueFunction(aValueReturnedFromFirstComponent)]]" restamp>
            <second-page which-sub-route={aValueReturnedFromSecondComponent}></second-page>
            <template is="dom-if" if="[[_isTrueFunction(aValueReturnedFromSecondComponentComponent)]]" restamp>
                <third-page ></third-page>
            </template>
        </template>
    </template>

        <script>
        Polymer({
            is: 'my-root-component',
            behaviors: [doesntMatterHere],
            properties: {

第一个 dom-if 按预期工作,但第二个似乎没有考虑在内,我的第三页组件从未显示。

我检查并 _isTrueFunction(aValueReturnedFromSecondComponent) 的等效项返回 true。

4

1 回答 1

1

确实aValueReturnedFromFirstComponent返回任何东西,因为您应该将属性声明为which-route="{{aValueReturnedFromFirstComponent}}"而不是使用 simple { }

元素中的whichRoute(注意 camelCase)属性是否具有该属性,因此变量实际上会发回更新的值?first-obrigatiory-pagenotify: true


我通常在 dom-if 不更新时对变量设置观察者,这样我就可以看到它们是否真的改变了,然后我自己通过控制台设置变量,document.querySelector('my-root-component').set('aValueReturnedFromFirstComponent', true)这样我就可以看到 dom-if 真的更新了。

一种解决方法可能是使用事件,但您所做的应该有效。

于 2018-07-23T09:39:48.557 回答