自定义函数中的聚合物未定义属性

时间:2015-07-22 06:52:51

标签: javascript polymer polymer-1.0

我使用聚合物(v1.0),我想创建一个简单的元素,它可以向我显示一些额外的内容,具体取决于属性,并且它必须与多个值 - 又称简单的“切换”。

我写了这段代码。

...
    <span>{{for}}</span>
    <template is="dom-if" if="{{checkFor('alfa')}}">
        hi !!!
    </template>
</template>

<script>
    Polymer({
        is: "...",

        properties: {
            for: String,
            user: String,
            manager: {
                type: Boolean,
                notify: true
            }
        },

        attached: function() {
            this.textContent = 'Hello World, my user is ' + (this.user || 'nobody') + '.\n' +
                    'This user is ' + (this.manager ? '' : 'not') + ' a manager and he likes ' + this.for + '.';
        },


        checkFor: function (aaa) {
            // return aaa === this.for;

            this.textContent = 'Hello World, my user is ' + (this.user || 'nobody') + '.\n' +
                    'This user is ' + (this.manager ? '' : 'not') + ' a manager and he likes ' + this.for + '.';
        }
    });
</script>

我的函数checkFor用于检查我想要的值(例如'alfa')是否与element属性/属性for相等。

但它根本不起作用所以我尝试使用console.log()检查值。之后,我发现变量aaa包含'alfa',变量this.for包含undefined

然后我复制了一些我发现的使用元素属性的输出代码,但它也没有用。如果我在attached函数中运行相同的代码,它可以正常工作。

如何在自定义函数中使用元素属性?

1 个答案:

答案 0 :(得分:2)

第一次调用checkFor函数时,this.for尚未定义。您可以将for作为参数传递给函数,如documentation中所述。

<template is="dom-if" if="{{checkFor('alfa', for)}}">