纸张 - 无线电组/纸张 - 单选按钮值与Vaadin 10的双向绑定

时间:2018-04-02 09:08:43

标签: vaadin polymer-2.x vaadin10

我正在使用 Vaadin 10 的beta3,并且我有一个绑定到Component(@HtmlImport)的html文件,其中包含一个<dom-repeat>,其中有一个纸无线电组。我希望 paper-radio-group#selected-property 绑定到我的模型的两个方向,这样当用户选择不同的单选按钮时,它的值将被写回到模型。不幸的是,对我来说它只能作为一种单向模型,因为java-side 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>

1 个答案:

答案 0 :(得分:1)

我怀疑这是由Flow的安全功能引起的。出于安全原因,不接受来自客户端的任意模型值更改。相反,只允许在双向模板绑定中使用的属性(即{{propertyName}})或在相应的Java getter上使用@AllowClientUpdates显式注释的属性。

查找{{propertyName}}的逻辑对<dom-repeat>的内部运作方式没有任何具体了解,因此无法知道{{item.aOrBProperty}}对应myListOfSomething[*].aOrBProperty

如果我的假设是正确的,您可以通过在模型界面中的@AllowClientUpdates方法中添加getAOrBProperty()来解决此问题。