paper-radio-group / paper-radio-button 值与 Vaadin 10 的双向绑定
two-way binding of paper-radio-group / paper-radio-button value with Vaadin 10
我正在使用 Vaadin 10 的 beta3,我有一个 html 文件绑定到一个组件 (@HtmlImport),其中包含一个 <dom-repeat>
我在里面有一个 paper-radio-group。我希望 paper-radio-group#selected-属性 以两种方式绑定到我的模型,这样当用户选择不同的单选按钮时,它的值将被写回模型。不幸的是,对我来说它只作为一种单向模型工作,因为 java 端 setter setAOrBProperty()
从未被调用过。有人可以提示我需要做什么才能将新值写入服务器吗?
<link rel="import" href="./bower_components/polymer/polymer-element.html">
<link rel="import" href="bower_components/paper-radio-button/paper-radio-button.html">
<link rel="import" href="bower_components/paper-radio-group/paper-radio-group.html">
<dom-module id=“dmmdl”>
<template>
<div>
<dom-repeat items=“[[myListOfSomething]]”>
<div>
<paper-radio-group selected="{{item.aOrBProperty}}” allow-empty-selection>
<paper-radio-button name=“a”>A</paper-radio-button>
<paper-radio-button name=“b”>B</paper-radio-button>
</paper-radio-group>
</div>
</template>
</div>
</template>
<script>
class BooksGridElement extends Polymer.Element {
static get is() {
return 'books-grid'
}
// only for testing !!
// ready() {
// super.ready();
// this.books = results;
// }
}
customElements.define(BooksGridElement.is, BooksGridElement);
</script>
</dom-module>
我怀疑这是由 Flow 的安全功能引起的。出于安全原因,不接受来自客户端的任意模型值更改。相反,仅允许对 two-way 模板绑定中使用的属性(即 {{propertyName}}
)或在相应的 Java getter 上用 @AllowClientUpdates
明确注释的属性进行更改。
寻找{{propertyName}}
的逻辑没有任何关于<dom-repeat>
内部工作的具体知识,所以它不知道{{item.aOrBProperty}}
对应于myListOfSomething[*].aOrBProperty
.
如果我的假设是正确的,您可以通过将 @AllowClientUpdates
添加到模型界面中的 getAOrBProperty()
方法来解决这个问题。
我正在使用 Vaadin 10 的 beta3,我有一个 html 文件绑定到一个组件 (@HtmlImport),其中包含一个 <dom-repeat>
我在里面有一个 paper-radio-group。我希望 paper-radio-group#selected-属性 以两种方式绑定到我的模型,这样当用户选择不同的单选按钮时,它的值将被写回模型。不幸的是,对我来说它只作为一种单向模型工作,因为 java 端 setter setAOrBProperty()
从未被调用过。有人可以提示我需要做什么才能将新值写入服务器吗?
<link rel="import" href="./bower_components/polymer/polymer-element.html">
<link rel="import" href="bower_components/paper-radio-button/paper-radio-button.html">
<link rel="import" href="bower_components/paper-radio-group/paper-radio-group.html">
<dom-module id=“dmmdl”>
<template>
<div>
<dom-repeat items=“[[myListOfSomething]]”>
<div>
<paper-radio-group selected="{{item.aOrBProperty}}” allow-empty-selection>
<paper-radio-button name=“a”>A</paper-radio-button>
<paper-radio-button name=“b”>B</paper-radio-button>
</paper-radio-group>
</div>
</template>
</div>
</template>
<script>
class BooksGridElement extends Polymer.Element {
static get is() {
return 'books-grid'
}
// only for testing !!
// ready() {
// super.ready();
// this.books = results;
// }
}
customElements.define(BooksGridElement.is, BooksGridElement);
</script>
</dom-module>
我怀疑这是由 Flow 的安全功能引起的。出于安全原因,不接受来自客户端的任意模型值更改。相反,仅允许对 two-way 模板绑定中使用的属性(即 {{propertyName}}
)或在相应的 Java getter 上用 @AllowClientUpdates
明确注释的属性进行更改。
寻找{{propertyName}}
的逻辑没有任何关于<dom-repeat>
内部工作的具体知识,所以它不知道{{item.aOrBProperty}}
对应于myListOfSomething[*].aOrBProperty
.
如果我的假设是正确的,您可以通过将 @AllowClientUpdates
添加到模型界面中的 getAOrBProperty()
方法来解决这个问题。