Javascript 通过AJAX加载整个AngularJS页面
我需要加载一个完整的旧页面,包括一些AJAX的AngularJS到我们的新页面中 起初它根本不起作用,我只是得到了简单的AngularJS标记Javascript 通过AJAX加载整个AngularJS页面,javascript,jquery,html,angularjs,ajax,Javascript,Jquery,Html,Angularjs,Ajax,我需要加载一个完整的旧页面,包括一些AJAX的AngularJS到我们的新页面中 起初它根本不起作用,我只是得到了简单的AngularJS标记 Rank ID {{$index+1}} {{player.playerid}} 但是后来我找到了with,它使用了$compile,对于线程中的给定示例非常好。所以我试着用我的代码运行它,现在我得到以下错误消息 错误:[ng:areq]参数“HighscoreCtrl”不是函数,未定义 我使用$.get获取整个角度页面,并过滤包含所有
Rank ID
{{$index+1}} {{player.playerid}}
但是后来我找到了with,它使用了$compile
,对于线程中的给定示例非常好。所以我试着用我的代码运行它,现在我得到以下错误消息
错误:[ng:areq]参数“HighscoreCtrl”不是函数,未定义
我使用$.get
获取整个角度页面,并过滤包含所有内容(角度标记、模块和控制器)的div的响应,然后将其放入div\mainContent
jQuery获取:
$.get(link, function(data) {
var temp = $(data);
var links = temp.filter('link');
var scripts = temp.not('div').not('link').not('meta').not('title');
var body = temp.filter('#test123');
console.log(body);
$("#mainContent").html(
$compile(
body
)($scope));
$scope.$apply();
});
正文包括:
<div id="test123" ng-app="indexApp">
<div class="container" ng-controller="HighscoreCtrl">
<table class="table">
<tr>
<th>Rank</th>
<th>ID</th>
</tr>
<tr ng-repeat="player in players">
<td>{{$index+1}}</td>
<td>{{player.playerid}}</td>
</tr>
</table>
</div>
<script type="text/javascript">
var angularModule = angular.module('indexApp', []);
angularModule.controller('HighscoreCtrl', function($scope, $http){
$scope.players = [
{ playerid: "Joe#2293"},
{ playerid: "Joe#0815"}
];
});
</script>
</div>
等级
身份证件
{{$index+1}}
{{player.playerid}
var angularModule=angular.module('indexApp',[]);
angularModule.controller('HighscoreCtrl',函数($scope,$http){
$scope.players=[
{playerid:“乔#2293”},
{playerid:“乔#0815”}
];
});
在编译标记之前,我已经尝试分割角度部分并包含模块和控制器,但这也不起作用
我想做的事可能吗
下面是我为测试代码而创建的一个简单示例:
看起来您没有包含控制器的js文件,因为您只是在拉身体。纸条参考可能在标题部分。您需要将指向该js文件的链接包含在主体中,或者动态地将其添加回主体中。看起来您没有包含控制器的js文件,因为您只是在主体中拉。纸条参考可能在标题部分。您需要在主体中包含指向该js文件的链接,或者动态地将其添加回主体。主体包含控制器。所以,我认为这就足够了。如果我将控制器部分复制到index.html
中,并在赋值之前更改模块的变量名,它就可以正常工作(.但不幸的是,我不能在我们的实际应用程序中这样做。当你说主体包含控制器时。你是指父主体还是子Ajax加载主体?在你的实际应用程序中,它是如何像你的问题或你的plnkr一样的?你能发布一个它实际上是如何的示例吗?body
是我加载的变量
>从ajax.html到(请参阅“jQuery get”-代码块)。然后我使用$(“#mainContent”).html(…)
来“粘贴”你可以在我的上一个代码块中看到变量body
的内容。它包含角度标记和控制器声明本身。我的问题和我添加的plnkr应该是相同的,因为我刚刚将plnkr的部分复制到我的问题中。plnkr看起来像实际的应用程序,非常简单plified。我遇到了一个类似的问题。我的问题与chrome页面上加载的脚本的顺序有关。我怀疑这是一个dom没有准备好的问题,当脚本准备好时,或者反之亦然。我解决问题的方法是将子代上的js代码包装到一个init函数中。然后我调用了init func通过ajax加载我的页面后,我的操作。主体包含控制器。因此,我认为这就足够了。如果我将控制器部分复制到index.html
中,并在分配之前更改模块的变量名,它就可以正常工作了(.但不幸的是,我不能在我们的实际应用程序中这样做。当你说主体包含控制器时。你是指父主体还是子Ajax加载主体?在你的实际应用程序中,它是如何像你的问题或你的plnkr一样的?你能发布一个它实际上是如何的示例吗?body
是我加载的变量
>从ajax.html到(请参阅“jQuery get”-代码块)。然后我使用$(“#mainContent”).html(…)
来“粘贴”你可以在我的上一个代码块中看到变量body
的内容。它包含角度标记和控制器声明本身。我的问题和我添加的plnkr应该是相同的,因为我刚刚将plnkr的部分复制到我的问题中。plnkr看起来像实际的应用程序,非常简单plified。我遇到了一个类似的问题。我的问题与chrome页面上加载的脚本的顺序有关。我怀疑这是一个dom没有准备好的问题,当脚本准备好时,或者反之亦然。我解决问题的方法是将子代上的js代码包装到一个init函数中。然后我调用了init func通过ajax加载我的页面后重新启动。