当前位置: 首页 > 面试题库 >

从外部JS访问Angular对象的功能

朱俊雅
2023-03-14
问题内容

我正在使用AngularJS框架构建HTML应用程序。我有一些旧的JavaScript操作,需要访问Angular对象中的函数,但无法使其正常工作。
这是Angular对象(我需要访问的函数是$scope.info()):

function content($scope) {
    $scope.info = function (id) {
        console.log('Got a call from '+id);
        $scope.text = "Hello, "+id;
    };
}

我试图通过访问它angular.element('content').scope().info('me'),但是没有结果(控制台说undefined)。我尝试转储的结果angular.element('content').scope(),并且获得了完整的对象列表和所有内容。从理论上讲,我的第一个示例应该可以,但是不能。

非常感谢我如何实现这一目标的任何指导!

当我终于能够访问的功能,它并没有如预期的工作-的价值$scope.text技术上的
修改,但不更新在HTML中使用的表述!例如,<p>{{text}}</p>从外部函数调用此函数后不会更新。

有没有什么办法解决这一问题?


问题答案:

angular.element()需要一个 DOM元素 ,所以如果您有这个html:

<div ng-controller="content">
</div>

并且要访问其DOM元素,请使用一个id:

<div id="myDiv" ng-controller="content">
</div>

然后

angular.element($('#myDiv')).scope().info('me')

或没有jQuery:

angular.element(document.getElementById('myDiv')).scope().info('me')

应该管用。

编辑:

如果更改了范围,则可能需要使用$
apply()

angular.element(document.getElementById('myDiv')).scope().$apply();


 类似资料:
  • 问题内容: 我的应用程序在$ rootScope中初始化一个对象图,如下所示: …然后使用该对象图中的数据(仅1向绑定),就像这样… 这项工作正常,但是如果我随后(在页面渲染完成之后)尝试更新$ rootScope并将原始对象替换为新对象,则将其忽略。我最初以为这是因为AngularJS保留了对原始对象的引用,即使我已经替换了它。 但是,如果将使用方的HTML包装在控制器中,则可以按预期的方式重复

  • 前面几节讲到如何访问kubneretes集群,本文主要讲解访问kubenretes中的Pod和Serivce的几种方式,包括如下几种: hostNetwork hostPort NodePort LoadBalancer Ingress 说是暴露Pod其实跟暴露Service是一回事,因为Pod就是Service的backend。 hostNetwork: true 这是一种直接定义Pod网络的方

  • 问题内容: 我正在尝试查看是否存在通过外部javascript函数访问控制器内部范围的简单方法(与目标控制器完全无关) 我在其他几个问题上看到 会从DOM元素中检索范围,但是我的尝试目前未产生正确的结果。 这是jsfiddle:http : //jsfiddle.net/sXkjc/5/ 我目前正在经历从纯JS到Angular的过渡。我试图实现这一目标的主要原因是要保持原始库代码尽可能完整。无需我

  • 问题内容: 我有两个包。我要从第一个包中导入的类声明为PUBLIC。尽管如此,当我从第二个软件包测试文件时,它向我显示了如下编译错误: PUBLICclass在mypackage中不是公共的;无法从外部包访问 我试图从第一个程序包中向该类添加一个公共构造函数,但没有任何区别。 你有什么想法?我使用Netbeans 7。 第一个包中的类如下所示: 问题答案: 让我猜猜 您最初的课堂声明不是公开的,然

  • 问题内容: 就像是 这是我想象的格式,但事实并非如此。什么会退回到对象的父级? 问题答案: JavaScript本身不提供此功能。而且我怀疑您是否可以创建这种类型的功能。例如: 鲍比属于谁?

  • 问题内容: 我想使用React.js制作一个应用程序。我希望它可以轻松地从外部进行自定义(例如,通过编写用户脚本)。我尝试使用的想法是在根元素状态(如或)中创建一些特殊的属性,以便插件开发人员可以在此处添加一些内容。我的问题是:这是否是一个好方法,是否有Right Way™实现与我的目标相似的目标,最后,插件开发人员将如何使用这些道具? 问题答案: 一种选择是可观察的。基本上,它是一个对象,您可以