dart - Dart Polymer错误 'List'不是 'ObservableList'的 'value'类型的子类型

标签 dart dart-polymer core-elements

我正在使用core-ajax-dart来获取一些数据并将其放入core-list-dart中。而且我不断收到此错误。我能够成功传递标题为String的标题,但无法传递联系人。它失败并显示以下错误

Exception: Uncaught Error: type 'List' is not a subtype of type 'ObservableList' of 'value'.



主页

<core-ajax-dart auto id="_ajax" url="https://polymer-contacts.firebaseio.com/{{category}}.json" handleAs="json"></core-ajax-dart>
<contacts-page class="page" id="contacts" contacts="{{contacts}}" heading="{{heading}}" flex></contacts-page>
List contacts;
ContactsPage cp = $['contacts'] as ContactsPage;
var ajax = $['_ajax'] as CoreAjax;
    ajax.on["core-response"].listen((event) {
      var detail = event.detail;
      var response = detail['response'];
      cp.contacts = response;
    });

元素定义

<div id="title" flex>{{heading}}</div>
<core-list-dart id="list" data="{{contacts}}">
@published List contacts;
@published String heading;

堆栈跟踪:

Exception: Uncaught Error: type 'List' is not a subtype of type 'ObservableList' of 'value'.
Stack Trace:
#0      CoreList.data= (package:core_elements/core_list_dart.dart:48:124)
#1      main.<anonymous closure> (http://localhost:8080/index.html_bootstrap.dart:114:27)
#2      GeneratedObjectAccessorService.write (package:smoke/static.dart:114:11)
#3      write (package:smoke/smoke.dart:34:40)
#4      _updateNode (package:polymer/src/instance.dart:1412:16)
#5      _convertAndCheck (package:polymer_expressions/polymer_expressions.dart:302:16)
#6      _RootZone.runUnaryGuarded (dart:async/zone.dart:1093)
#7      _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:341)
#8      _DelayedData.perform (dart:async/stream_impl.dart:595)
#9      _StreamImplEvents.handleNext (dart:async/stream_impl.dart:711)
#10     _PendingEvents.schedule.<anonymous closure> (dart:async/stream_impl.dart:671)
#11     _asyncRunCallbackLoop (dart:async/schedule_microtask.dart:41)
#12     _asyncRunCallback (dart:async/schedule_microtask.dart:48)
#13     _handleMutation (dart:html:41817)

Almost full source

最佳答案

<core-list-dart>的data属性需要ObservableList而不是List

您可以做的是将字段更改为getter / setter,将传递的List自动转换为ObservableList,例如

class Model extends Object with Observable {
// or class SomeElement extends PolymerElement {

  ObservableList _contacts;
  @observable ObservableList get contacts => _contacts;
  set contacts(List contacts) {
    final old = _contacts;
    if(contacts is ObservableList) {
      _contacts = contacts;
    }
    _contacts = toObservable(contacts);
    notifyPropertyChange(#contacts, old, _contacts);
  }
}

关于dart - Dart Polymer错误 'List'不是 'ObservableList'的 'value'类型的子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28394587/

相关文章:

firebase - 是 Firebase 音乐流应用程序的理想选择。 ( flutter )

dart - 当前在 Dart Polymer 中扩展自定义元素的方法?

dart - Dart + Polymer中的算术运算会引发无效的参数异常

dart - 以编程方式创建数据列表

dart - 如何使用<core-list-dart>显示简单信息

flutter - Dart Flutter DevTools "Debugger"标签未显示

jquery - Google Dart 表单工作示例

flutter - Flutter: future builder 不会更新表单值

dart - 如何在输入有效的 paper-input 属性上进行监听

css - polymer 纸下拉菜单扩展高度受核心折叠限制?