不支持的操作:无法评估' in'表达

时间:2014-07-03 12:49:58

标签: dart polymer dart-polymer

我正在尝试制作一个显示图像标签的图像查看器,我打算使用重复模板输出标签。不幸的是我在

时遇到了这个错误
Breaking on exception: Unsupported operation: can't eval an 'in' expression

通过向上移动堆栈跟踪,我能够确定正在评估的表达式是“tagList中的tag_string”,它来自此自定义元素:

<link rel="import" href="packages/polymer/polymer.html">
<polymer-element name="dartlery-viewer">
  <template>
    <style>
      :host {
        position:absolute;
        left:210px;
        top:0px;
        border: solid 0px black;
        right:0;
        text-align:center;

      }
      div#viewer {
        display:none;
      }
    </style>
    <div id="viewer">
      <img src="{{imageSource}}" />
      <textarea>
            <template repeat="{{tag_string in tagList}}">
            tag
      </template>
      </textarea>
    </div>
  </template>
  <script type="application/dart" src="dartlery_viewer.dart"></script>
</polymer-element>

这是它的课程:

import 'dart:html';
import 'dart:convert';
import 'package:polymer/polymer.dart';
import 'package:dartlery_client/dartlery.dart';

@CustomTag('dartlery-viewer')
class DartleryViewerElement extends PolymerElement {

  @observable String id = "-1";
  @observable String imageSource = "-1";

  final List tagList = new ObservableList();

  Element get _ele {
    return $["viewer"];
  }

  DartleryViewerElement.created() : super.created()  {


  }

  void displayFile(String id) {
    HttpRequest.getString("${SERVER_ADDRESS}files/${id}").then((response) {
      Map data = JSON.decode(response);
      if(data["files"]!=null) {
        for(Map file in data["files"]) {
          _showImageData(file);
        }
      }
    });
    this.show();
    this.id = id;
  }

  void _showImageData(Map data) {
    this.tagList.clear();
    this.tagList.addAll(data["tags"]);

    this.imageSource = data["src"];
  }

  void hide() {
    this._ele.style.display = "none";
  }

  void show() {
    this._ele.style.display = "block";
  }


}

我错过了一些愚蠢的东西吗?

1 个答案:

答案 0 :(得分:2)

<textarea>的内容被视为字符数据。模板标记在<textarea>内没有任何意义。包含in的表达式仅对<template repeat='{{x in y}}'>有效,因此无法对其进行评估。

为什么不让tagList成为字符串并指定data['tags'].join(',')<textarea value='{{tagList}}'></textarea>之类的内容?