我想在Dart类中使用const并在我的HTML中引用它的值。例如:
飞镖课:
Class MyClass
{
static const String MY_VALUE = "foo";
}
HTML:
<input value="{{MyClass.MY_VALUE}}">
我们可以这样做吗?
答案 0 :(得分:3)
不,据我所知,你不能在模板中使用静态const。模板需要实例方法和getter。但是有一个简单的解决方法:定义一个返回const值的getter,然后在HTML中使用该getter。
以下是getter的代码:
String get myValue => MY_VALUE;
以下是在HTML中使用getter:
<input value="{{myValue}}">
答案 1 :(得分:0)
我试过它,因为我是聚合物的新手,我认为你不能发布静态的最终类变量/可观察,但你可以拥有最终的实例变量。发布/观测。
// my.dart
class MyClass
{
@observable static final String MY_VALUE="foo";
}
不行,但确实如此。
// my.dart
class MyClass
{
@observable final String MY_VALUE="foo";
}
...我余下的漫无边际的答案。
然后
<!-- mytemplate.html -->
<polymer-element name="my-tag" >
<!-- lowercase and minus convention for html tag names -->
<template>
<input value={{MY_VALUE}}/>
</template>
<script type="application/dart" src="my.dart"/>
</polymer-element>
然后返回my.dart,添加
import 'package:polymer/polymer.dart';
import 'dart:html'; // what for ? why is there single quotes ?
@CustomTag('my-tag')
// camel case , brackets, single quotes,
class MyClass {
@observable static final int MY_VALUE="foo";
// lowercase after @, no brackets, no single quotes
}
来自我对custom polymer elements的了解
最后
<!-- index.html -->
<html>
<head>
<link rel="import" href="mytemplate.html"/>
<script type="application/dart">
export 'package:polymer/init.dart';
</script>
<script src="packages/browser/dart.js" />
</head>
<body>
<my-tag></my-tag>
</body>
</html>
回顾过去,有很多引用正在进行中。 自定义html聚合物元素必须链接到dart代码,
里面<polymer-element></polymer-element>
标签有一个
<script type="application/dart" src="my.dart"/>
dart代码必须链接到自定义html元素,因此有一个
@CustomTag('my-tag')
在类声明之前。 还需要导入聚合物库和html库, 并且需要使类静态常量可观察。 也许@observable标签只适用于对象。
我试过了,它只适用于物体, 当我在my.html中使用缩写的脚本标记时,它没有编译, 所以我必须做
<script type="application/dart" src="my.dart">
</script>