似乎设置了一个 1 个方向的数据绑定,即使它应该是双向的



一直在处理 2 个文件:my_ajax_fetcher.data/html,数据如下:

my_ajax_fetcher.飞镖

@HtmlImport('my_ajax_fetcher.html')
library webserver_ajax.lib.iron_ajax;
import 'package:web_components/web_components.dart';
import 'package:polymer/polymer.dart';
import 'package:polymer_elements/iron_ajax.dart';
import 'package:polymer_elements/iron_request.dart';
///Uses [IronAjax]
@PolymerRegister('my-ajax-fetcher')
class IronAjaxSample extends PolymerElement {
  @property
  String f_name;
  @property
  String l_name;
  @property
  int identification;

  //IronAjax ia = querySelector('myAjaxId');
  IronAjaxSample.created() : super.created(){
    print("created.");
    //ia.generateRequest();
  }

  @reflectable
  void handleResponse ( [CustomEventWrapper cew, IronRequest ir] ){
    print("handle response fired");
    var data = ir.response;
    f_name = data["f_name"];
    l_name = data["l_name"];
    identification = data["id"];
    print("$f_name $l_name: $identification");
  }
}

my_ajax_fetcher.html

<dom-module id="my-ajax-fetcher">
    <template>
        <iron-ajax id="myAjaxId" auto
          url="http://localhost:8675/test_server/v1/users/35"
          handle-as="json"
          on-response="handleResponse" ></iron-ajax>
        <div>First Name: {{f_name}}</div>
        <div>Last Name:  {{l_name}}</div>
        <div>Student ID:  {{identification}}</div>
    </template>
</dom-module>

当 ajax 调用完成时,它将调用handleResponse,这将设置f_namel_nameidentification变量。 问题是我看到变量设置在handleResponse的最后一行.

它不会根据说来设置标记:First Name: Frank,它只是空的。 我已经确定,出于某种原因,handleResponse与其他功能的范围不同。 我该如何解决这个问题?

在 Dart 中,您始终需要使用 set(...) 或 Polymer 提供的任何其他方法来更新数据。

set('f_name', data["f_name"]);
set('l_name', data["l_name"]);
set('identification', data["id"]);   

在 JavaScript 中,对于 Polymer 元素的字段,这不是必需的,仅适用于复杂类型的属性(自定义类、集合等)

参见

  • https://github.com/dart-lang/polymer-dart/wiki/properties#list-mutation-methods
  • https://github.com/dart-lang/polymer-dart/wiki/data-binding-syntax#path-change-notification
  • https://pub.dartlang.org/packages/polymer_autonotify
  • https://pub.dartlang.org/packages/autonotify_observe

最新更新