javascript - 将 $compile 和 $scope 应用于移入 ng-view 元素的外部 div 文本

标签 javascript angularjs angularjs-scope

我有一个div我附加到 ng-view 中的元素之一的元素DOM 树。 div包含我想在当前 $scope 中评估的文本元素ng-view的树。如何让 Angular 重新评估该范围内的附加元素?

div元素最初存在于文档的单独部分中,在 ng-view 之外。元素,看起来像这样:

<div id="eventInfo">
  The event takes place at {{eventModel.startTime}}.
</div>

我需要eventModel.startTime相对于 ng-view 内的元素范围进行绑定(bind)的表达式我将其移入其中,其范围包含 eventModel 的正确实例对象。

我认为我需要按照以下方式做一些事情:

targetDiv.appendChild(eventInfo);      // Move event text into target element
var scope = angular.element(targetDiv).scope();    // Get target scope
angular.$compile(eventInfo)(scope);    // (?) Apply target scope to event text

问题出在最后一行。该 JS 代码不在 Angular Controller 内,那么我如何访问 $compile

(我已经查看了问题“Bind an externally loaded DOM element to Angular's scope ”,但它没有回答我的问题。)

最佳答案

您需要从应用 injector 获取 $compile 服务.

假设您的 ng-app 位于 html 级别,或者您使用文档作为 rootElement 手动引导应用程序(否则选择哪个是根元素而不是文档):

var $compile = angular.element(document).injector().get('$compile');
$compile(eventInfo)(scope);
scope.$apply();

关于javascript - 将 $compile 和 $scope 应用于移入 ng-view 元素的外部 div 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30768566/

相关文章:

javascript - 简单的 innerHTML 更新不起作用

javascript - Jquery Mobile - 从其他按钮单击更改标题中的图标颜色

unit-testing - Angularjs 如何对依赖于另一个有 promise 的服务的服务进行单元测试?

javascript - ES5 : Object. 键 JS 中的本地方法

javascript - 获取与元素关联的所有 CSS

javascript - AngularJS $http.get() 在 Chrome 中最多需要 10-20 秒,在 Firefox 中运行良好

javascript - 如何激活当前选项卡

javascript - 计算 Angular js中表单中必填字段的数量?

javascript - Angular JS "Controller as"语法不起作用

javascript - Angular View 不更新新数据