加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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中运行 –

单击该按钮会引发错误.
Ng-单击“getMe”的“无getter”.但是输入和标签上的数据绑定完全正常.

示例代码

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
>在pubspec.yaml中使用html_files. docs
>将您的组件及其模板放在lib目录中.

附:在angular.dart v1.0中,publishAs不执行任何操作,因为表达式评估上下文是组件本身. docs

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读