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() 方法来解决这个问题。