您可以在动态获取数据上使用angular吗? 我有一个现有的应用程序,其中大部分内容是在ajax调用后由javascript呈现的。 所以我有这个div是由ajax获取数据,然后由JavaScript呈现填充。 那么,在所有这些由ajax获取的大量html中,如果我在这些元素之一上使用ng-app,它似乎不起作用。 对初始请求中提取的html元素(在ajax请求之前)执行相同的操作。动态获取数据上的angular.js
所以这里是代码:
文件:test.php的
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" ng-app>
<head>
<script type="text/javascript" src="jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="angular.min.js"></script>
<script type="text/javascript" src="ang_app.js"></script>
<script>
$(document).ready(function() {
$.ajax({
url: "test2.php"
}).success(function(data) {
$('#content').html(data);
});
});
</script>
<body>
<h2>This is an app</h2>
<div ng-app ng-controller="StatsCtrl2">StatsCtrl2</div>
<div id="content"></div>
</body>
</html>
文件test2.php:
<?php
echo '<div style="background-color:green;" ng-app ng-controller="StatsCtrl">Should be StatsCtrl</div>';
文件ang_app.js:
function StatsCtrl($scope){
alert("function StatsCtrl");
}
function StatsCtrl2($scope){
alert("function StatsCtrl2");
}
好吧,运行这个应用程序,我看到了人ert为“StatsCtrl2”。但“StatsCtrl”内的警报从不显示应用程序。难道我做错了什么?
你的问题的简短答案是肯定的。如果您需要更详细的帮助,则需要提供一些代码或许多更多详细信息。 – Blunderfest 2014-09-05 14:58:39
问题在于数据是由ajax通过执行xmlrpc请求获取的。数据是作为纯xml返回的。Javascript会通过这些数据并构建html结构。我在代码的“静态”部分中添加了angular.js和controller.js,这是初始请求返回的代码。你的意思是它应该工作。但是,当页面已经加载(在Ajax请求之前)ng-app将不会被发现,因为它会出现在xmlrpc请求完成后,并在JavaScript呈现HTML后。你仍然认为它应该工作? – user3726562 2014-09-05 15:04:10
添加你的代码样本,你将能够得到更好的答案。 – Blunderfest 2014-09-05 15:09:25