关于聚合物:是否可能嵌套/内部 dom-if,其中第二个 dom-if 取决于从第一个 dom-if 块观察到的值

is it possible nest/inner dom-if where the second dom-if depends on value oberseved from the first dom-if block

我仔细阅读了这些主题

当数据改变时,聚合物 1 嵌套在 dom-repeat 中的 dom-if 不更新

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

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

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

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

一个简单的例子是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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>

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

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

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


aValueReturnedFromFirstComponent 是否真的返回任何东西,因为您应该将属性声明为 which-route="{{aValueReturnedFromFirstComponent}}" 而不是使用简单的 { }.

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

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

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