似乎设置了一个单向数据绑定,即使它应该是双向的
Seeming to set a 1-directional databind even though it should be bidirectional
一直在处理2个文件:my_ajax_fetcher.data/html,数据如下:
my_ajax_fetcher.dart
@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_name
、l_name
、identification
变量。问题是我看到变量设置在 handleResponse
.
的最后一行
它根本没有根据 say: 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 元素的字段不是必需的,仅对于复杂类型的属性(自定义 类、集合等)
另见
一直在处理2个文件:my_ajax_fetcher.data/html,数据如下:
my_ajax_fetcher.dart
@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_name
、l_name
、identification
变量。问题是我看到变量设置在 handleResponse
.
它根本没有根据 say: 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 元素的字段不是必需的,仅对于复杂类型的属性(自定义 类、集合等)
另见