"关闭"的价值从对象显示属性时(编译为javascript后)

时间:2014-03-15 03:26:29

标签: dart angular-dart

我遇到的问题是我的Angular Dart应用程序在运行javascript时的行为与在dartium中运行时的行为大不相同。最简单的案例我可以归结为:

<!DOCTYPE html>
<html ng-app>
<body test-case ng-cloak>
  {{ctrl.test.name}}
  {{ctrl.getObjName()}}

  <script src="packages/shadow_dom/shadow_dom.debug.js"></script>
  <script type="application/dart" src="main.dart"></script>
  <script type="text/javascript" src="packages/browser/dart.js"></script>
</body>
</html>

//then my controller:
@NgController(
  selector: '[test-case]',
  publishAs: 'ctrl')
class TestCaseController {

    DummyObj test = new DummyObj('foo');    
    String getObjName() => test.name;
}

//and my DummyObj:
class DummyObj {
    String name;
    DummyObj(this.name);
}

当我在dartium中运行它时,它完全按预期工作,并显示:

foo foo

但是当我以javascript运行时,我得到以下内容:

Closure foo

任何人都可以帮忙确定这里发生了什么吗?我是否犯了某种错误,只有在javascript中运行时才能显示出来?

1 个答案:

答案 0 :(得分:0)

好的,我发现了这个问题。在我的main.dart(我没有在上面列出)中,我包含了@MirrorsUsed注释,但是我的DummyObj不在目标列表中。

@MirrorsUsed(
targets: const ['test-case'],
   override: '*')
import 'dart:mirrors';

如果我删除整个块,它就可以了。谢谢你的帮助,Ozan!