热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

android如何在angular4中通过本机javascript调用角度函数

在Angular1.x中,我们可以使用angular.element(appElement).scope()获得$scope,然后使用$apply(),以便本机javascript

在Angular 1.x中,我们可以使用angular.element(appElement).scope()获得$scope,然后使用$apply(),以便本机Javascript可以直接调用angular函数或双向绑定.在Angular 4中,我们如何通过本地Javascript或android native调用angular函数或双向绑定.

例如 :

该网络是由angular 4开发的,它将在android webview中使用,因此它需要与android进行交互,我该如何处理这种交互?

解决方法:

我可以想到很多方法,但从未阅读过手册中的任何内容,这些内容澄清了大多数Angular方法.

区域

您必须记住,Angular在引擎的核心使用区域和更改检测树.因此,任何外部访问都需要在这种情况下发生.

您必须在Angular区域中运行外部代码:

zone.run(() => {
// do work here
});

如果对将直接或间接影响模板表达式的任何数据进行更改,则存在更改检测错误的风险.因此,组件需要注入ChangeDetectorRef并调用markForCheck.

因此,如果您的代码在组件内部运行但在Angular外部运行.您需要这样做:

zone.run(() => {
// do work here.
this.ChangeDetectorRef.markForCheck();
});

尽管如此,这还是提出了一个问题.我如何到达组件?

访问角度

您必须引导Angular应用程序,以便可以对其进行访问.

当您引导Angular应用程序时,浏览器服务会将诺言返回给主模块.该主模块包含注射器,您可以从那里访问任何导出的服务.

platformBrowserDynamic()
.bootstrapModule(AppModule)
.then((modRef: NgModuleRef) => {
window.myGlobalService = modRef.injector.get(MyServiceClass);
});

这会将服务类放置为全局变量.您必须创建一个转发到Angular区域的API.

@Injectable()
export class MyServiceClass {
public dataEmitter: Subject = new Subject();
public constructor(private zone: NgZone) {}
public fooBar(data: any): any {
return this.zone.run(()=>{
// do work here
this.dataEmitter.next(data);
return "My response";
});
}
}

您可以从zone.run的服务中返回结果.关键是Angular代码在正确的区域中运行.

简易组件单向绑定

单向数据绑定的最简单解决方案是仅将事件模块用于DOM.

@Component({....})
export class MyComponent {
@HostListener('example',['$event'])
public onExample(event: Event) {
console.log(event.fooBar);
}
}
// else where in external Javascript
var elem; // the DOM element with the component
var event = new Event('example', {fooBar: 'Hello from JS!'});
elem.dispatchEvent(elem);

我喜欢这种方法,因为Angular会像处理其他任何类型的事件(即click事件)一样处理事件监听器

您也可以采用其他方法.让组件在其ElementRef上发出DOM事件,以供外部Javascript侦听.这使得整个双向通信成为更多的DOM标准.


推荐阅读
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 导出功能protectedvoidbtnExport(objectsender,EventArgse){用来打开下载窗口stringfileName中 ... [详细]
  • 本文介绍了在wepy中运用小顺序页面受权的计划,包含了用户点击作废后的从新受权计划。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
author-avatar
卝軎亟_621
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有