Polymer中的私有状态变量

时间:2016-01-25 21:35:58

标签: javascript polymer web-component

在Polymer元素中存储私有状态属性的推荐做法是什么?例如,仅对内部呈现有意义的属性(例如,一些布尔标志指示呈现元素的哪些部分,或者从dom-repeat可以迭代的对象构建的临时数组)。它们并不意味着通过元素的API公开,仅供内部使用。

我到目前为止所做的是声明可以通过properties对象中的元素API使用的属性,而{private}属性已在ready和其他函数中设置(例如{{ 1}})没有在this._tempArray = []中明确声明它们。我不知道这是不是一个好主意?

properties

1 个答案:

答案 0 :(得分:6)

执行此操作的最佳方法是将您的属性声明为普通属性,但在名称前面加上下划线(_)前缀,并将该属性设置为只读,以便外部使用者无法覆盖该变量。

例如:

properties: {
    _isDataReady: {
        type: Boolean,
        value: false,
        readOnly: true
    }
}

ready: function () {
    ...
    this.async(function () {
        //Some async logic
        ...
        this._set_isDataReady(true); //You will need to use this special generated setter to set the value
    );
}

此方法向消费者传达他们不应该使用此属性,因为它是内部属性,并且只读属性可防止在其正常工作流程之外错误地设置属性。