Javascript angular.js在动态获取的数据上

Javascript angular.js在动态获取的数据上,javascript,ajax,angularjs,Javascript,Ajax,Angularjs,您可以在动态获取的数据上使用angular吗? 我有一个现有的应用程序,其中大部分内容在ajax调用后由javascript呈现。 因此,我有一个div,它由ajax获取数据填充,然后由javascript呈现。 嗯,在所有这些由ajax获取的html中,如果我在其中一个元素上使用ng app,它似乎不起作用。 对在初始请求(在ajax请求之前)中获取的html元素执行相同的操作也可以 下面是代码: 文件:test.php <!DOCTYPE html PUBLIC "-//W3C//DT

您可以在动态获取的数据上使用angular吗? 我有一个现有的应用程序,其中大部分内容在ajax调用后由javascript呈现。 因此,我有一个div,它由ajax获取数据填充,然后由javascript呈现。 嗯,在所有这些由ajax获取的html中,如果我在其中一个元素上使用ng app,它似乎不起作用。 对在初始请求(在ajax请求之前)中获取的html元素执行相同的操作也可以

下面是代码:

文件: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>
好吧,运行这个应用程序我看到了“StatStrl2”的警报。但“StatsCtrl”内的警报从未显示应用程序。我做错什么了吗?

(1)AngularJS在
$(document.ready)上运行。
这意味着当AJAX响应到来时,
ng controller=“StatsCtrl2”
已经绑定到该DIV

(2) 正如我在(1)中所说,AngularJS在DOM ready上解析HTML中的指令。您需要
$compile
随后注入的HTML

(3) 您正在现有的
ng-app
ng-controller
中添加
ng-app
ng-controller
。当您修复所有其他问题时,这很可能会导致更多问题

你对这件事的态度很糟糕。在正常情况下,您只能访问服务、控制器、指令等内部的AngularJS内置内容。 我之所以指定这一点,是因为解决您的问题的方法是

    $.ajax({
        url: "test2.php"
    }).success(function(data) {
        $('#content').html(data);
        $compile($('#content'))($scope);
    });
但是那里没有
$compile
$scope
。这些仅存在于AngularJS应用程序中

您需要停止使用jQuery,并开始使用专门为此设计的实际AngularJS构造:一个带有
$http
ng include
的控制器。 那么你就不必担心(2)和(3)


我重复一遍:AngularJS不打算以您使用它的方式使用。如果你以某种方式破解了你所拥有的并使其发挥作用,你以后只会陷入更多的麻烦。

你的问题的简短答案是肯定的。如果您需要更详细的帮助,您需要提供一些代码或更多的详细信息。数据以纯xml的形式返回。Javascript遍历这些数据并构建html结构。我在代码的“静态”部分添加了angular.js和controller.js,这是初始请求返回的代码。你的意思是它应该有用。但是当页面加载(在ajax请求之前)时,将找不到ng应用程序,因为它将在xmlrpc请求完成后以及javascript呈现html后出现。你仍然认为它应该工作吗?添加一个代码示例,你将能够得到更好的答案。你需要定义“它似乎不工作”谢谢。对不起,我不确定我是否理解你的结论。你是说AngularJS在通过ajax获取的数据动态创建控制器时工作不好吗?AngularJS的工作方式与预期完全一致,没有任何坏处或好处。它从来没有打算监视DOM的任何变化并将其角度化。如果你需要它,那么你必须自己做。AngularJS将指令应用于HTML片段的方法是内置的
$compile
方法:
function StatsCtrl($scope){
alert("function StatsCtrl");
}

function StatsCtrl2($scope){
alert("function StatsCtrl2");
}
    $.ajax({
        url: "test2.php"
    }).success(function(data) {
        $('#content').html(data);
        $compile($('#content'))($scope);
    });