为什么我使用angular.dart 0.10和ng-view获得js执行错误?

时间:2014-04-24 08:03:55

标签: dart angular-dart

我刚迁移到angular-0.10.0。我的应用程序在 Dartium 中按预期工作,但在js中通过 dart2js 我在Web控制台中得到以下未明确的错误:

No getter for 'ctrl'.

STACKTRACE:
Error
    at dart.wrapException (http://localhost:8080/app/main.dart.js:2390:15)
    at StaticClosureMap.lookupGetter$1 (http://localhost:8080/app/main.dart.js:8926:17)
    at DynamicParserBackend.newAccessScope$1 (http://localhost:8080/app/main.dart.js:7177:21)
    at DynamicParserImpl.parseAccessOrCallScope$0 (http://localhost:8080/app/main.dart.js:7531:29)
    at DynamicParserImpl.parsePrimary$0 (http://localhost:8080/app/main.dart.js:7507:21)
    at DynamicParserImpl.parseAccessOrCallMember$0 (http://localhost:8080/app/main.dart.js:7464:21)
    at DynamicParserImpl.parsePrefix$0 (http://localhost:8080/app/main.dart.js:7460:21)
    at DynamicParserImpl.parseMultiplicative$0 (http://localhost:8080/app/main.dart.js:7439:21)
    at DynamicParserImpl.parseAdditive$0 (http://localhost:8080/app/main.dart.js:7428:21)
    at DynamicParserImpl.parseRelational$0 (http://localhost:8080/app/main.dart.js:7413:21) 

pubspec.yaml

name: app
version: 0.0.1-dev
dependencies:
  angular: any
  browser: any
dev_dependencies:
  unittest: any
transformers:
- angular

控制器:

@Controller(selector: '[myCtrl]', publishAs: 'ctrl')
class MyController {
  String search = 'test';
}

html模板:

<div myCtrl>
  <input ng-model="ctrl.search"></input>
  {{ ctrl.search }}
</div>

错误仅出现在<ng-view>内。如果我直接在主html中添加上面的html,则不会出现js错误。

1 个答案:

答案 0 :(得分:4)

Pavel Jbanov在this post中指出:

  

我相信expression_generator转换器无法发现您的模板文件,因此您可能需要手动添加它:https://github.com/angular/angular.dart/blob/master/lib/tools/transformer/options.dart#L17

并进一步:

  

变压器有望更好地识别模板文件,因此您无需手动列出它们。现在,afaik,它只获取组件的模板文件。

因此,现在您必须在pubspec.yaml部分中html_files手动添加所有未跟踪的html模板:

name: app
version: 0.0.1-dev
dependencies:
  angular: any
  browser: any
dev_dependencies:
  unittest: any
transformers:
- angular:
    html_files:
    - web/template1.html
    - web/template2.html
    - web/template3.html