Ng-在AngularDart中单击“clickHandler”的No getter
发布时间:2020-12-17 17:43:56 所属栏目:安全 来源:网络整理
导读:试图让一个简单的点击处理程序工作,这被证明非常令人沮丧.该应用程序只是一个测试应用程序来尝试不同的Angular.Dart功能. – 使用Dart 1.6和Angular 1.0并在Dartium中运行 – 单击该按钮会引发错误. Ng-单击“getMe”的“无getter”.但是输入和标签上的数据
试图让一个简单的点击处理程序工作,这被证明非常令人沮丧.该应用程序只是一个测试应用程序来尝试不同的Angular.Dart功能. – 使用Dart 1.6和Angular 1.0并在Dartium中运行 –
单击该按钮会引发错误. 示例代码 import 'package:angular/angular.dart'; import 'package:angular/application_factory.dart'; class TestMod extends Module { TestMod() { bind(ToggleComponent); } } @Component(selector: 'toggle-comp',templateUrl: "test.html",publishAs: 'toggle') class ToggleComponent { String name = ""; @NgTwoWay('rating') int rating; ToggleComponent() { } void clickMe() { print("Click"); } } void main() { applicationFactory() ..addModule(new TestMod()) ..run(); } test.html文件 – 绑定适用于ng-model但不适用于ng-click <div> <h3>Hellos {{name}} {{rating}}!</h3> Name: <input type="text" ng-model="name"> <button ng-click="clickMe()">Click me</button> </div> 最后这里是index.html文件 <!DOCTYPE html> <html ng-app > <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>AngularDartTest</title> <script async type="application/dart" src="main.dart"></script> <script async src="packages/browser/dart.js"></script> <link rel="stylesheet" href="assets/main.css"> </head> <body> <toggle-comp rating="5"></toggle-comp> </body> </html> 按下按钮时的堆栈跟踪 No getter for 'clickMe'. STACKTRACE: #0 StaticClosureMap.lookupGetter (package:angular/core/parser/static_closure_map.dart:14:25) #1 StaticClosureMap.lookupFunction (package:angular/core/parser/static_closure_map.dart:25:26) #2 ClosureMapLocalsAware.lookupFunction.<anonymous closure> (package:angular/core/parser/parser.dart:253:44) #3 CallScope.eval (package:angular/core/parser/eval_calls.dart:27:25) #4 _UnwrapExceptionDecorator.eval (package:angular/core/parser/parser.dart:117:30) #5 BoundExpression.call (package:angular/core/parser/syntax.dart:59:36) #6 NgEvent._initListener.<anonymous closure> (package:angular/directive/ng_events.dart:142:39) #7 _rootRunUnary (dart:async/zone.dart:840) #8 _ZoneDelegate.runUnary (dart:async/zone.dart:466) #9 _onRunUnary.<anonymous closure> (package:angular/core/zone.dart:122:63) #10 VmTurnZone._onRunBase (package:angular/core/zone.dart:104:16) #11 _onRunUnary (package:angular/core/zone.dart:122:17) #12 _CustomZone.runUnary (dart:async/zone.dart:748) #13 _CustomZone.runUnaryGuarded (dart:async/zone.dart:656) #14 _CustomZone.bindUnaryCallback.<anonymous closure> (dart:async/zone.dart:682) 解决方法
问题是角度变换器无法找到test.html,因此无法提取clickMe getter.仅当我们在模板中的表达式中看到符号时才会生成getter.
通过getter我的意思是映射“clickMe”:( o)=> o.clickme.您始终可以检查我们在main_static_expressions.dart中生成的所有getter / setter. 变压器应该是固定的(PR非常受欢迎),但同时有很多方法可以强制生成吸气剂: >使用exportExpressions. docs 附:在angular.dart v1.0中,publishAs不执行任何操作,因为表达式评估上下文是组件本身. docs (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |