ng-controller加载后DOM准备好没有被Angular拾取
ng-controller loads after DOM ready not picked up by Angular
我们有一个混合的应用程序,它混合了一些角度和一些香草javascript。我们正试图一点一点地将其转换为有角度的。
我们现在面临的问题是,在应用程序的一部分中,HTML 模板从 ajax 调用注入到 DOM 中。此 HTMl 包含
ng-controller="MyController"
但是 angular 不会连接这个控制器,因为我们在控制器上放了一个控制台.log它从未出现过。那么,如果它被非角度代码注入到 DOM 中,我们如何告诉 angular 寻找这个控制器。
您需要使用 $compile
来允许 angular 动态编译此 HTML 模板。 $watch
将允许您在每次 AJAX 返回的字符串更改时编译此模板。
.HTML
<html ng-app="app">
<body>
<h1>AJAX-provided HTML into Angular-rendered template</h1>
<div ng-controller="MyController">
<div dynamic="html"></div>
</div>
</body>
</html>
JavaScript
var app = angular.module('app', []);
app.directive('dynamic', function ($compile) {
return {
restrict: 'A',
replace: true,
link: function (scope, ele, attrs) {
scope.$watch(attrs.dynamic, function(html) {
ele.html(html);
$compile(ele.contents())(scope);
});
}
};
});
function MyController($scope) {
$scope.updateHtml = function(html){
$scope.html = "";
}
}
要强制 jQuery 更新 Angular 代码,您可以尝试为该 DOM 元素调用角度对象(然后访问该对象的控制器):
jQuery
$.ajax(href, {
success: function(data){
var element = angular.element($('#myElement'));
var scope = element.scope();
scope.$apply(function(){
scope.updateHtml(data);
});
}
});
相关文章:
- Angular JS IE9 Hashbang url rewriting
- 如何使用skip参数使用angular ui引导进行服务器端分页
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 使用angular重定向到html页面
- angular.js没有'无法在PhoneGap中处理视图标记
- Javascript(Angular)从一个对象数组到第二个数组查找值
- angular 1.5应用程序中的导航栏
- angular的下拉菜单
- Angular只从数组中获取所需的数据
- 如何将不可变的js导入angular 2(alpha)
- Angular js-返回一个包含类似
- 如何使用 Angular JS 将数据保存在数据库中
- 将JSON对象传递给angular指令
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- Angular:更新一次性绑定的数据
- 同步调用,直到用户通过angular验证为访问者
- 将Angular js与taglib结合使用
- ng-controller加载后DOM准备好没有被Angular拾取
- 关闭日期拾取器的Angular事件检测