NG-click AngularDart 中的“clickHandler”没有 getter

2023-12-29

尝试让一个简单的点击处理程序正常工作,事实证明这是相当令人沮丧的。该应用程序只是一个测试应用程序,用于尝试不同的 Angular.Dart 功能。 - 使用 Dart 1.6 和 Angular 1.0 并在 Dartium 中运行 -

单击该按钮会引发错误。 Ng-click 'clickMe' 没有 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)

问题是 Angular Transformer 无法找到 test.html,因此无法提取 clickMe getter。仅当我们在模板的表达式中看到该符号时,才会生成吸气剂。

我所说的吸气剂是指映射"clickMe": (o) => o.clickme。您可以随时检查我们生成的所有 getter/settermain_static_expressions.dart.

变压器应该是固定的(PR 非常受欢迎),但同时有多种方法可以强制生成吸气剂:

  1. 使用导出表达式。docs https://docs.angulardart.org/#angular/angular-core-annotation.Directive@id_exportExpressions
  2. 在 pubspec.yaml 中使用 html_files。docs https://docs.angulardart.org/#angular/angular-app
  3. 将您的组件及其模板放在 lib 目录中。

附:在 angular.dart v1.0 中,publishAs 不执行任何操作,因为表达式求值上下文是组件本身。docs https://docs.angulardart.org/#angular/angular-core-annotation.Directive@id_exportExpressions

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NG-click AngularDart 中的“clickHandler”没有 getter 的相关文章

随机推荐

  • 浏览工作簿的所有用户表单

    我想编写一个 VBA 程序来打印工作簿中所有用户窗体的名称 例如 如果工作簿有一个名为的用户窗体frmHello 我只想打印UserForm frmHello 有谁知道哪个集合是关于用户表单的 以及如何查找用户表单的名称 这对我有用 Dim
  • 如何从 Rust 访问在 C 中声明的以零结尾的函数指针数组?

    我有以下带有以零结尾的函数指针数组的 C 代码 include
  • 为什么 Rebol 中的“上下文”和“对象”功能不同,但本质上是相同的?

    一方面我们有 gt gt source object object make function Defines a unique object blk block Object words and values make object ap
  • 将列表传递给 RESTful Web 服务

    有没有办法将列表传递给 Jersey 中的 RESTFul Web 服务方法 像 PathParam list 列表列表之类的东西 希望这对您有帮助 Java代码 import java util List Path customers p
  • 如何比较 Serial.read() 中的字符串?

    我在下面有这段代码 是我从哪里得到的这个论坛 http forum arduino cc index php topic 204484 0 html我遵循了这一点 它对我不起作用 但他们声称代码很好 我已经尝试了几种字符串比较方法 例如st
  • 多站点登录 ala Google

    不确定标题是否适合这个问题 但我想不出任何其他方式来表达它 假设您想要创建多个不同的 Web 应用程序 但您希望登录一个应用程序的用户能够直接访问您的其他应用程序而无需重新登录 假设他们也有权查看其他应用程序 如果我没记错的话 如果您登录了
  • 如何将 HTML5“必需”属性添加到 woocommerce_form_field

    我目前正在我的 WordPress 主题中开发 WooCommerce 注册页面 并添加了一个钩子供用户接受条款和条件 请参阅添加的 PHP 代码 HTML5为输入字段提供了一个超级有用的功能 就是在标签中添加 必填 新浏览器会自动提示警告
  • 当 phantomjs 在与 selenium hub 不同的机器上运行时,连接被拒绝

    是否可以在一台机器上有一个selenium集线器 并在另一台计算机上有一个phantomjs实例 以与selenium节点相同的方式连接到集线器 如果我在同一台机器上启动 selenium hub 和 phantomjs 实例 我可以成功运
  • jquery 可以在 iphone 的 safari 上运行吗?

    我正在开发一个网站 我使用 slimbox2 插件 类似于 lightbox 来使用 jquery 来生成照片放大 该插件适用于我尝试过的所有浏览器 除了 iPhone 上的 Safari 它在 Windows 版 Safari 上确实可以
  • 如何选择不运行文档测试?

    我正在编写一个 Rust 库 我想在我的文档中提供示例 编译作为运行的一部分cargo test do not run 这可能吗 我正在编写一个数据库客户端库 这些示例使用了一个假设的 不存在的数据库服务器 因此 这些示例在运行时总是会失败
  • pytube.exceptions.RegexMatchError:get_transform_object:找不到 var for={(.*?)} 的匹配项;

    使用以下代码使用 PyTube 库下载视频时 yt streams get highest resolution download PATH f PATH mp4 我收到错误 raise RegexMatchError caller get
  • 使用整数作为多维 numpy 数组的索引

    我有形状的布尔数组 n samples n items 它代表一个集合 my set i j 告诉样本是否i包含项目j 为了填充它 该数组被初始化为零 并接收另一个整数数组 其形状 n samples 3 告诉每个示例属于它的三个元素 例如
  • toBe(true) vs toBeTruthy() vs toBeTrue()

    有什么区别expect something toBe true expect something toBeTruthy and expect something toBeTrue 注意toBeTrue is a 自定义匹配器引入于jasmi
  • 运行 javaFx 应用程序时显示错误

    我正在运行 javaFx 应用程序 当我单击某些按钮时 它显示以下错误 无法创建透明舞台 因为您的屏幕不支持 Alpha 通道 您需要启用 XComposite 扩展 我无法找到问题所在 我花了将近一个小时但仍然没有输出 请帮忙 提前致谢
  • C 项目的 sonarqube 扫描仪属性文件

    我正在使用 sonarqube 来分析 X 文件 分析后我无法看到 C C 列出的完整气味 例如 除以零错误未在代码气味中列出 我的声纳扫描仪设置已使用以下选项重新配置为 C 语言sonar language c并使用 C 语言特定标签 例
  • SonarQube JavaScript 禁用部分代码

    我想禁用文件中的一段代码 例如函数 以供 SonarQube 分析 有关如何执行此操作的任何建议 我在这里找到了一些关于java的东西 gt 关闭某些代码的声纳 https stackoverflow com questions 10971
  • 多个站点上的 APC 用户缓存密钥冲突

    避免使用 APC 进行用户缓存的同一服务器上运行的多个站点之间发生密钥冲突的最佳选择是什么 我遇到过这样的问题 2 个或更多站点使用相同的缓存键 并期望在其下存储不同类型的项目 一个期望 json 字符串 另一个期望数组 另一个期望对象 他
  • 在 ORDER BY 子句中使用聚合函数和聚合函数的别名是否存在与性能相关的差异?

    我有一个相关问题ORDER BY or GROUP BY clause 例如我有以下查询 SELECT country name COUNT FROM user location WHERE country name IS NOT NULL
  • 是否可以将输入传递给正在运行的服务或守护进程?

    我想创建一个在 Linux 上作为守护进程运行的 Java 控制台应用程序 我已经创建了该应用程序和脚本以将该应用程序作为后台守护进程运行 应用程序运行并等待命令行输入 我的问题 是否可以将命令行输入传递给正在运行的守护进程 在Linux上
  • NG-click AngularDart 中的“clickHandler”没有 getter

    尝试让一个简单的点击处理程序正常工作 事实证明这是相当令人沮丧的 该应用程序只是一个测试应用程序 用于尝试不同的 Angular Dart 功能 使用 Dart 1 6 和 Angular 1 0 并在 Dartium 中运行 单击该按钮会