【发布时间】:2015-11-23 05:34:39
【问题描述】:
我需要通过 AJAX 将包括一些 AngularJS 在内的整个旧页面加载到我们的新页面中。
起初它根本不起作用,我只是得到了普通的 AngularJS 标记,例如
Rank ID
{{$index+1}} {{player.playerid}}
但后来我发现this stackoverflow thread 和this demo,它使用$compile 并且对于线程中的给定示例工作得非常好。因此,我尝试使用我的代码运行它,现在我收到以下错误消息
错误:[ng:areq] 参数 'HighscoreCtrl' 不是函数,未定义
我使用$.get 获取整个Angular-Page 并过滤包含所有内容(角度标记、模块和控制器)的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>
我已经尝试在编译标记之前拆分角度部分并包含模块和控制器,但这也不起作用。
我正在尝试做的事情可能吗?
这是我为测试代码而创建的一个简单示例: plnkr-Demo
【问题讨论】:
标签: javascript jquery html angularjs ajax