我刚迁移到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错误。
答案 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