- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用预制模板组装一个管理界面。已经构建的导航系统使用 jQuery 将内容加载到基于 window.location.hash
的 AJAX 标记中。
如果我通过 AJAX 调用获取此片段,然后将其插入 DOM:
<div ng-app="myApp">
{{ 2 + 2 }}
</div>
AngularJS 不知道我已经更新了 DOM。我看到的内容就是 {{ 2 + 2 }}
。如果我重新加载页面,表达式将计算并且我看到我想要的值 4
。
我如何要求 AngularJS 评估我通过非 Angular 方法强加给 DOM 的内容?
这是一个 fiddle :http://jsfiddle.net/4zRTH/
编辑
@tasseKATT 的回答非常适合简单的表达式,但我在访问 Controller 时遇到了问题。我有一个 NotesController
,我正在导入的代码需要访问它。更多类似的内容:
<div ng-controller="NotesController">
{{ notes.length }}
</div>
我更新了 fiddle ,所以它更符合我想要做的事情:http://jsfiddle.net/5Xhs9/4/
最佳答案
你需要使用$apply
:
$apply() is used to execute an expression in angular from outside of the angular framework. (For example from browser DOM events, setTimeout, XHR or third party libraries). Because we are calling into the angular framework we need to perform proper scope life cycle of exception handling, executing watches.
但是在您的示例中,该应用程序甚至没有启动,因此您需要:
1) 选择元素:
var dynamicContent = "<div id='someId' ng-app> {{ 2 + 2 }} </div>";
$('.expression').html(dynamicContent);
var element = angular.element(document.querySelector('#someId'));
2) 引导它:
angular.bootstrap(element, []);
3) 检索范围:
var elementScope = element.scope();
4) 调用 $apply:
elementScope.$apply();
为新场景编辑:
在您的新示例中,您已将 ng-app"myApp"
添加到现有的 div,因此 AngularJS 将为您引导您的应用程序,现在您想要动态添加此内容:
<div id='notes' ng-controller='NotesController'> {{ notes.length }} </div>
您已经定义了 NotesController
并将其添加到模块中。您现在可以做的是:
1) 检索 $injector
服务:
var $injector = angular.element(document.querySelector('.container')).injector();
2) 使用$injector
编译新添加的元素并将它链接到它的范围
。调用$apply
:
var element = angular.element(document.querySelector('#notes'));
$injector.invoke(function($compile) {
var scope = element.scope();
$compile(element)(scope);
scope.$apply();
});
关于ajax - 我如何告诉 AngularJS 我一直在用 jQuery 作弊?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21891723/
我有一个在 Android 市场上相当流行的应用程序,它允许数以万计的用户按下一个按钮并向它发出语音命令。然后我就可以做很多不同的事情,比如给他们提供当前的天气预报等等...... 无论如何,我的应用
令人惊讶的是,标题基本上解释了它。我们有一个我们的客户制作的页面,我们正在重新创建该页面。 页面高度会一直增加,直到(我假设是这样)浏览器达到它的极限。我已经尝试过 Firebug 和 W3 验证器,
我是 react-native 的新手,试图创建我自己的组件,但它一直显示一个空屏幕。 这是我的组件代码 class BoxComponent extends Component { cons
我正在为我的 PHP 元素创建一个非常简单的博客,但遇到了一个简单的问题。我无法让我的页眉图像一直 float 。我有一个横幅,左边有一些文字,我有一个 1px 的切片,在可以选择的任何分辨率的宽度上
为什么我可以在另一个 Controller 的 View 中访问一个 Controller 的辅助方法?有没有办法在不破解/修补 Rails 的情况下禁用它? 最佳答案 @George Schreib
我正在使用带有最新 ADT 插件的 Eclipse Kepler SP2。每隔一分钟 Eclipse 就会说“为 Android 4.4.2 加载数据”并阻止我想做的一切。我在不同的文件夹中有几个 E
我是一名优秀的程序员,十分优秀!