gpt4 book ai didi

polymer-1.0 - 聚合物 1.0 : Refresh/Re-Render Computed Value Without Property Binding

转载 作者:行者123 更新时间:2023-12-04 18:01:45 24 4
gpt4 key购买 nike

我正在尝试重新计算并在 Polymer 1.0 模板中呈现一个值。但是,我尝试在不绑定(bind)任何属性的情况下执行此操作。

在重要的情况下,用例是用于使用字符串键查找翻译值的翻译机制。当 'translations' 值发生变化时,需要重新计算 translate() 调用。

组件定义如下:

<dom-module id="my-component">
<template>
<style></style>
<p><span>[[translate("SOME_STRING")]]</span></p>
</template>

<script>
var MyComponent = Polymer({
is: "my-component",
properties: {
translations: {
type: Object,
notify: true,
value: {
"SOME_STRING": "Some String"
}
}
},
translate: function (key) {
if (this.translations.hasOwnProperty(key)) {
return this.translations[key];
}
}
});
</script>
</dom-module>

我可以通过将 translations 属性添加到 translate() 调用来使刷新工作,如下所示:

<p><span>[[translate("SOME_STRING", translations)]]</span></p>

但是,我想做的是重新计算/刷新,而不必在每次调用中将 translations 属性作为第二个参数(也有其他原因)。

基本上,当 translations 对象更新为不同的语言环境翻译时,我希望重新计算 translate("SOME_STRING")

这可能吗?有没有办法重新渲染模板,甚至只是手动重新渲染整个组件?如何?如果不是,在绑定(bind)中没有属性的情况下获取计算值或重新呈现模板的最简单方法是什么?

最佳答案

怎么样????

<dom-module id="my-component">
<template>
<style></style>
<p><span>[[str]]</span></p>
</template>

<script>
var MyComponent = Polymer({
is: "my-component",
properties: {
translations: {
type: Object,
notify: true,
value: {
"SOME_STRING": "Some String"
},
observer: '_Changed'
},
str: {
type: String,
value: "hello"
}

},
_Changed: function(){
this.set("str",this.translate(this.str));
},
translate: function (key) {
if (this.translations.hasOwnProperty(key)) {
return this.translations[key];
}
}
});
</script>

关于polymer-1.0 - 聚合物 1.0 : Refresh/Re-Render Computed Value Without Property Binding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34234724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com