3.7.3.4.2. 处理数据

如果需要加载数据,只需要在 HTML 中放置需要的 cuba-data 元素,并且设置必须属性。

实体加载

使用 cuba-entities 来加载实体。一旦设置了 entity-nameview 属性,这个元素可以加载实体列表,并且通过 data 属性将数据暴露给 Polymer 数据绑定的变量:

  1. <cuba-entities entity-name="sec$User" view="_local" data="{{users}}"></cuba-entities>

然后可以很简单的展示数据:

  1. <template is="dom-repeat" items="[[users]]" as="user">
  2. <div>[[user.login]]</div>
  3. </template>

实体查询

按照 此处 描述定义一个查询。

使用 cuba-query 元素来获取查询结果。可以选择性的通过 params 属性传递参数:

  1. <cuba-query id="query"
  2. auto="[[auto]]"
  3. entity-name="sec$User"
  4. query-name="usersByName"
  5. data="{{users}}">
  6. </cuba-query>
  7. <template is="dom-repeat" items="[[users]]" as="user">
  8. <div>[[user.login]]</div>
  9. </template>

服务调用

这里 的方法暴露服务及其方法。使用 cuba-service 元素来调用这个方法:

  1. <cuba-service service-name="cuba_ServerInfoService"
  2. method="getReleaseNumber"
  3. data="{{releaseNumber}}"
  4. handle-as="text"></cuba-service>
  5. Release number: [[releaseNumber]]

实体创建

cuba-entity-formcuba-service-form 元素能帮助发送数据到后台。

在下面的例子中,绑定 user 对象到 entity 属性,并通过这个属性保存到数据库。

  1. <cuba-entity-form id="entityForm"
  2. entity-name="sec$User"
  3. entity="[[user]]"
  4. on-cuba-form-response="_handleFormResponse"
  5. on-cuba-form-error="_handleFormError">
  6. <label>Login: <input type="text" name="login" value="{{user.login::input}}"></label>
  7. <label>Name: <input type="text" name="login" value="{{user.name::input}}"></label>
  8. <button on-tap="_submit">Submit</button>
  9. </cuba-entity-form>
  10. <paper-toast id="successToast">Entity created</paper-toast>
  11. <paper-toast id="errorToast">Entity creation error</paper-toast>
  1. _submit: function() {
  2. this.$.entityForm.submit();
  3. },
  4. _handleFormResponse: function() {
  5. this.user = getUserStub();
  6. this.$.successToast.open();
  7. },
  8. _handleFormError: function() {
  9. this.$.errorToast.open();
  10. }

如果在使用上面的例子中的 REST API 时不想强制用户登录,需要启用 REST API 匿名访问