열거 형을 구현하고 싶습니다. 열거 형 Visibility = visible | 숨겨진 | 접힌다트의 WebUI HTML 템플릿에 액세스 할 수있는 enum을 구현하려면 어떻게해야합니까?
나는 이것을 HTML 코드에서 설정하고 싶습니다. 컴파일러가 1에서 int, true, bool 등의 HTML에서 문자열 속성 값을 구문 분석 할 수있는 마법이 있습니다. 문자열에서 파싱 할 수있는 클래스를 허용 할 수있는 방법이 있습니까?
열거 형을 구현하고 싶습니다. 열거 형 Visibility = visible | 숨겨진 | 접힌다트의 WebUI HTML 템플릿에 액세스 할 수있는 enum을 구현하려면 어떻게해야합니까?
나는 이것을 HTML 코드에서 설정하고 싶습니다. 컴파일러가 1에서 int, true, bool 등의 HTML에서 문자열 속성 값을 구문 분석 할 수있는 마법이 있습니다. 문자열에서 파싱 할 수있는 클래스를 허용 할 수있는 방법이 있습니까?
다트는 아직 열거 형을 공식적으로 지원하지 않습니다. 우리는 미래에 열거 형을 추가 할 것으로 예상 : 한편 http://news.dartlang.org/2013/04/enum-proposal-for-dart.html
, 여기에 열거 에뮬레이트하는 일반적인 패턴이다 : 웹 UI의 사용자 정의 요소를 만들려면
class Enum {
final _value;
const Enum._internal(this._value);
toString() => 'Enum.$_value';
static const FOO = const Enum._internal('FOO');
static const BAR = const Enum._internal('BAR');
static const BAZ = const Enum._internal('BAZ');
}
How can I build an enum with Dart?
에서 온 그 열거 형 필드를 가지고 있다면 setter 및 getter를 사용하여 문자열 (HTML에서)을 열거 형으로 변환 할 수 있습니다.
import 'package:web_ui/web_ui.dart';
class Color {
final _value;
const Color._internal(this._value);
factory Color(String value) {
switch (value) {
case 'RED':
return Color.RED;
case 'BLUE':
return Color.BLUE;
case 'GREEN':
return Color.GREEN;
default:
throw 'not a color';
}
}
toString() => 'Color.$_value';
static const RED = const Color._internal('RED');
static const BLUE = const Color._internal('BLUE');
static const GREEN = const Color._internal('GREEN');
}
class PersonComponent extends WebComponent {
Color favoriteColor;
String get favColor => ((x) => x == null ? null : x._value)(favoriteColor);
void set favColor(String value) {
favoriteColor = new Color(value);
}
}
를, 그리고, HTML은 다음과 같습니다 :이 같은
뭔가 작업을해야 내가 거기에 기대했다
<html>
<body>
<element name="x-person" extends="div" constructor="PersonComponent">
<template>
<div>
Favorite Color: <select bind-value="favColor">
<option>RED</option>
<option>GREEN</option>
<option>BLUE</option>
</select>
</div>
<div>
You picked {{favoriteColor}}
</div>
</template>
<script type="application/dart" src="person_component.dart"></script>
</element>
</body>
</html>
파서 기능을 지정하는 몇 가지 방법이 될 것입니다. 이런 종류의 클래스 인터페이스를 오염시킵니다. 답변 해주셔서 감사합니다. – jz87
필터를 추가 할 예정이므로 HTML에서이 작업을 수행 할 수 있습니다. bind-value = "color | toColorEnum"과 같은 것입니다. –