我正在尝试解决聚合物行为的问题。具体来说,我正在使用app-localize-behavior。根据我可以收集的内容,除非将值定义为函数,否则将共享属性。
我已将app-localize-behavior添加到两个元素中。我有app-localize-behavior中与language属性相关联的输入框,以测试更改属性。因此在元素1中,我将属性更改为en,并且该元素中的转换有效,但元素2不执行任何操作。我通过元素2上的输入更改语言,然后翻译得很好。
我无法理解的是,我认为属性是在行为中,然后在一个元素中更改属性会更改另一个元素。
使用app-localize-behavior似乎有点无用,这种行为不会反映某些全局设置,但会反映该语言的大量本地设置。
以下是两个元素中使用的代码。
<link rel="import" href="../bower_components/app-localize-behavior/app-localize-behavior.html">
...
<input is="iron-input" bind-value="{{language}}">
<h1>{{localize('Matters')}}</h1>
...
behaviors: [
Polymer.AppLocalizeBehavior
],
properties: {
resources: {
value: function() {
return {
'en': { 'Matters': 'English Matter'},
'fr': { 'Matters': 'French Matter'}
}
}
}
},
...
有人可以帮忙吗?
答案 0 :(得分:0)
根据我的理解,它将找到属性&#34;语言&#34;在您的元素中并将其绑定为所选语言。它不会在应用中共享或存储属性语言。
应该使用行为来创建可共享的输入/输出操作;在目前的情况下,我相信你需要存储用户语言,并让其他一切。
my-app.html
)中声明属性。language
值绑定到您应用的所有其他观看次数。 language
属性应具有默认值"en"
。
properties: {
language: {
value: 'en'
},
}
<my-view1 language="[[language]]" name="view1"></my-view1>
我-view1.html
<script>
Polymer({
is: "x-app",
// include the behavior
behaviors: [
Polymer.AppLocalizeBehavior
],
// set the current language—shared across all elements in the app
// that use AppLocalizeBehavior
properties: {
language: {
value: 'en'
},
}
// load localized messages
attached: function() {
this.loadResources(this.resolveUrl('locales.json'));
},
});
</script>