Angularjs 1.X 相当于 Angular 2 HostBinding 和 HostListener

2024-03-01

我目前正在将一些 ng 1.X 元素指令迁移到 1.5“组件”格式。

我的指令都处于“replace : true”模式,其中很多指令的根元素上都有诸如“ng-class”或“ng-click”之类的内容。

使用新的 .component() 格式,replace 被强制设置为 false(就像在 ng2 中一样)。但在 ng2 中,有 HostBinding 和 HostListener 之类的东西可以与组件的根元素交互。

ng1 组件中 HostBinding 的正确等效项是什么?


这是用完成的$element and $scope控制器本地依赖项。

function SomeComponentController($scope, $element) {
  var self = this;

  $scope('$ctrl.foo', function (foo, oldFoo) {
    if (foo === oldFoo)
      return;

    // @HostBinding('bar') foo;
    self.bar = foo;

    // @HostBinding('attr.bar') foo;
    $element.attr('bar', foo);

    // @HostBinding('class.bar') foo;
    $element.toggleClass('bar', !!foo);
  });

  // @HostListener('click') onClick() {...}
  $element.on('click', function () {
    $scope.$evalAsync(self.onClick);
  });

  self.onClick = function () {...}.bind(self);
}

如果你想轻松地从 AngularJS 到 Angular 的未来过渡,应该注意的是ng-metadata https://github.com/ngParty/ng-metadata应该在 1.x TypeScript 项目中紧密复制 Angular 2+ API。

它包含所述装饰器的实现,并且还提供了有关幕后情况的注释:

@HostBinding http://@HostBinding

只需在提供的控制器属性上创建 $scope.$watch 并通过使用类型 classname(toggleClass)/attribute(attr)/property(setPathValue) 更改 DOM

@HostListener https://hotell.gitbooks.io/ng-metadata/content/docs/api/core/decorator.html#hostlistener

通过 .on(eventName) 在主机元素上手动注册事件侦听器,并在用 #scope.$applyAsync() 封装的侦听器回调中执行提供的方法,以通知整个应用程序可能发生的更改

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

Angularjs 1.X 相当于 Angular 2 HostBinding 和 HostListener 的相关文章

  • Javascript 进程是否有多个执行线程?

    背景 我正在创建一个 地址簿 类型的应用程序 有很多条目需要加载 一个想法是首先加载一小部分条目 让用户开始 然后将剩余条目排队 优先考虑用户单击的条目 例如 如果他们单击以 X 开头的名称 请先加载这些名称 然后再处理队列的其余部分 这个
  • AngularJS 中“href”和“ng-href”的区别

    我都用过href and ng href我看不出它们之间的区别 为什么 Angular 有ng href属性 什么时候应该使用它 从文档中 https docs angularjs org api ng directive ngHref 使
  • Angular UI 路由器嵌套视图问题

    我在理解 Angular UI Router 嵌套视图的工作原理时遇到了一些问题 我的 stateProvider 看起来像这样 stateProvider state login url login views main template
  • Javascript 作为对象键的函数与块中标记函数之间的语法冲突

    假设您有一个支持两者的浏览器带标签的函数声明 https developer mozilla org en US docs Web JavaScript Reference Statements label Labeled function
  • Apache Thrift Java-Javascript 通信

    我正在编写一个基于 Apache Thrift 的 Java 服务器 它将从 Javascript 客户端接收数据 我已经完成了 Java 服务器 但问题是我可以获得 Javascript 客户端的工作示例 我无法找到一个好的示例 构建文档
  • 如何通过setTimeout函数定期打印数字?

    var i 0 function counter for i i lt 100 i setTimeout gt console log i 2000 counter 我想以 2 秒的间隔打印 i 但它立即打印 每次打印调用只需要几微秒 为什
  • Firefox Addon 中的 JQuery 导致多个警告

    我在 Firefox 插件中使用 jquery 但我不断收到大量警告消息 如下所示 anonymous function does not always return a value System JS WARNING resource g
  • 播放没有音频标签的音频

    是否可以在没有音频标签的情况下仅使用 javascript 播放音频 我通过 tinyMce 编辑器注入脚本 因为我无权访问网站的后端 并且它不支持客户端的音频标签 她只想要当您将鼠标悬停在图像上时发出简单的声音 我已经完成了所有设置 但是
  • 如何知道 .keyup() 是否是字符键(jQuery)

    如何知道 keyup 是否是字符键 jQuery input keyup function if key is a character such as a b A b c 5 3 2 etc not enter key or shift o
  • 从链接打开本地文件夹

    如何通过单击任何链接打开本地文件夹视图 我尝试了很多选择 例如 a href Open folder a or a Open folder a or a Open folder a 解决方案 启动可下载链接 以下内容适用于所有浏览器 但一如
  • 如何从 html 页面 [javascript] 调用 Web 服务方法而不刷新页面

    我有一个webservice这将返回一个值 我的要求是 我需要调用它webservice从一个index html页面 该页面有一个 html 提交按钮 在该按钮上单击我正在呼叫JavaScript 从那里我想调用网络方法 我怎样才能做到这
  • 如何在React中动态分配属性?

    这是一个有两个参数的函数 我要创建的标签的名称 具有以下属性的对象 Using React 我创建一个组件并将该元素渲染到 DOM 问题是我想向元素添加属性 但它不允许循环在元素内设置属性 var Element function elem
  • 从字节数组设置 img src

    我需要设置img src我在对象中拥有的字节数组的属性 img
  • AngularJs ng-if 比较日期

    我正在比较 ng 中的两个日期 如果这就是我的玉文件的样子 li list group item ng if app Segments 0 StartDate getTime gt date getTime div row div col
  • 如何将MathJax公式转换为img

    Mathjax 现在在我的项目中运行良好 但有一个问题 有没有办法将MathJax的公式 纯html和css 转换成img文件 我可以保存 MathJax 可以配置为生成 SVG 看http docs mathjax org en late
  • Angularjs 和 UI-Select:如何从代码中选择选项

    在 AngularJS 中我有一个ui select
  • onPress 方法中箭头函数与普通函数的行为

    正在学习 Native React 并学习更多关于 javascript 的知识 所以我仍然不明白它的行为的很多事情 我使用 TouchableOpacity 及其 onPress 属性创建了一个按钮组件 为了让它工作 我必须发送我想要执行
  • jQuery Mobile + Admob:轮换?

    我使用 jQuery Mobile 框架创建了一个移动应用程序 所有页面都在index php中加载 使用 div 在每个页面的页脚中 我添加了Admob代码 div div div
  • Angular 7 CLI 生成的项目抛出“ERROR in multi ./src/styles.sass”

    我使用生成了一个新的 Angular 项目ng new dragonfly具有以下参数 角 v7 2Angular CLI v 7 3NPM 6 7 0Windows 10 我选择包含路由和 SCSS 当我尝试使用启动项目时npm star
  • 如何让 webpack 和 iis express 协同工作?

    I have Angular 2 和 Webpack 2 入门 https github com qdouble angular webpack2 starter它通过 webpack dev server 在节点上运行 我如何使用 web

随机推荐

  • 为什么异步数组映射返回承诺,而不是值

    请参阅下面的代码 var arr await 1 2 3 4 5 map async index gt return await new Promise resolve reject gt setTimeout gt resolve ind
  • 使用 OllyDbg 破解 C# 应用程序

    我想知道是否有办法用 OllyDebug 破解 C Windows 应用程序 我有一个用 Visual C 2010 Express 编写的简单的我自己的 CrackMe 应用程序 当我用 OllyDebug 打开它并根据需要修改 ASM
  • Java 从 ConcurrentHashMap 中删除特定项

    使用remove 方法可以吗 我读过一篇文章 说remove方法中还没有添加同步功能 如何正确删除specificConcurrentHashMap 中的项目 示例代码 ConcurrentHashMap
  • 是否可以使用或需要 Perl 脚本而不执行其语句?

    我需要对一些旧脚本添加单元测试 这些脚本基本上都是以下形式 usr bin perl Main code foo bar subs sub foo sub bar 如果我尝试在单元测试中 要求 此代码 则代码的主要部分将运行 因为我希望能够
  • com/android/dx/command/dexer/Main :不支持的 Major.minor 版本 52.0

    如何修复 com android dx command dexer Main 不支持的 Major minor 版本 52 0 错误图片当我单击 作为 Android 应用程序运行 时 https i stack imgur com iYj
  • CSS3 动画图像的比例

    我尝试像灯箱一样缩放图像 运行时图像的大小发生变化但没有动画 div class img rectangular div class DNNModuleContent ModDNNHTMLC div class Normal img alt
  • 访问 CODEIGNITER 中被认为已禁用的功能时出现问题

    我意识到我的申请中有一个非常重要的问题 这是关于雇用功能的 即使申请人已经被雇用 如果客户点击提案页面上的拒绝按钮 状态也会从 已批准 更改为 已拒绝 我想我应该改变这部分的一些东西 public function approve job
  • 使用 SOAP Web 服务而不依赖 app.config

    我正在构建一个将调用外部 Web 服务的 NET 组件 我使用 添加服务引用 对话框将 Web 服务添加到我的组件中 该组件生成使用该服务所需的代码并将设置添加到 app config 文件中 我通过从控制台应用程序添加对其 DLL 的引用
  • 从 Tap 获取 UILabel 中字符的索引

    我想获取 UILabel 上点击的字符的索引 我已经对 UILabel 进行了子类化 在我的 awakeFromNib 中我有这个 layoutManager NSLayoutManager textStorage NSTextStorag
  • LINQ to Objects .Distinct() 不拉出不同的对象

    我有两种模糊搜索客户的方法 一种是缩写名称 另一种是客户的全名 当我获取这两个结果集然后将它们合并在一起 我已经阅读了几个地方应该删除不同的值 时 我得到了重复项 认为我需要做的就是打电话给 Distinct 方法 我也仍然得到重复 我是否
  • 在pentaho中..如何传递包含作业中所有连接参数定义的文本文件?

    我正在使用 jdbc 连接 并使用示例 sample db connection 传递参数 并且该参数已在服务器中的文本文件中定义为sample db connection localhost 并且我想在作业步骤中传递文本文件 以便每当作业
  • 发送和接收 SOAP 消息

    我正在用 C 编写一个 Web 服务客户端 不想创建和序列化 反序列化对象 而是发送和接收原始 XML 这在 C 中可能吗 这是我刚刚根据 John M Gant 的示例运行的实现的一部分 设置内容类型请求标头非常重要 再加上我的请求需要凭
  • 使用 SSL 和客户端证书身份验证保护 ASP.NET MVC 应用程序

    我希望通过 SSL 和客户端证书身份验证来保护 ASP NET MVC 应用程序的安全 我使用的是 IIS 7 5 Windows Server 2008 R2 我想知道是否可以通过 Web config 执行以下操作 必须通过那里 所有请
  • 如何创建链接标签云[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要生成一个文本链接云 类似于所附的图像 由于有些文字是垂直的 我正在考虑通过 CSS3 来实现 但这会消耗大量时间 你知道有什么网
  • 使用 OpenCV 打开并读取 avi 文件 - Ubuntu

    我刚刚在 R Laganiere 的 OpenCV 2 计算机视觉应用编程手册 一书中读到了这一点 需要注意的是 为了打开指定的视频 文件 您的计算机必须安装相应的编解码器 否则 cv VideoCapture 将无法理解输入 文件 通常
  • 如何使用 angular_devise 保留全局当前用户直到注销?

    如何创建自己的全局可访问的服务 该服务将通过以下方式调用服务器currentUser 仅在页面加载时一次 如果用户已登录 则保留它并向控制器或状态提供数据 直到注销 现在我在许多状态或控制器中多次解析currentUser 我在文档中找到
  • 如何检测用户何时使用模拟位置 Chrome 浏览器[重复]

    这个问题在这里已经有答案了 有没有办法检测用户何时在 Chrome 浏览器 移动和桌面 中模拟他的位置 尝试过谷歌搜索 但我只看到如何实际模拟以及如何在本机移动应用程序中检测 参考这个问题 https stackoverflow com q
  • Execvp 不会对未知命令返回错误

    我有以下代码 用于分叉子级并执行命令 a 这是一个未知命令 但是 execvp 不会返回错误 而是打印 成功 当文件 a 不存在时 如果我执行 mv a b 也会发生同样的事情 我应该如何捕获并处理这些错误 int main int arg
  • java.lang.ClassCastException:android.app.ContextImpl

    我正在尝试将 ScoreNinja 融入我的小游戏中 http scoreninja appspot com http scoreninja appspot com 但是 每次都会抛出运行时异常 05 24 23 22 59 888 ERR
  • Angularjs 1.X 相当于 Angular 2 HostBinding 和 HostListener

    我目前正在将一些 ng 1 X 元素指令迁移到 1 5 组件 格式 我的指令都处于 replace true 模式 其中很多指令的根元素上都有诸如 ng class 或 ng click 之类的内容 使用新的 component 格式 re