从HTML引用静态consts

时间:2013-12-17 02:58:54

标签: dart dart-polymer

我想在Dart类中使用const并在我的HTML中引用它的值。例如:

飞镖课:

Class MyClass 
{
        static const String MY_VALUE = "foo";
}

HTML:

<input value="{{MyClass.MY_VALUE}}">

我们可以这样做吗?

2 个答案:

答案 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>