Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过AJAX加载整个AngularJS页面_Javascript_Jquery_Html_Angularjs_Ajax - Fatal编程技术网

Javascript 通过AJAX加载整个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获取整个角度页面,并过滤包含所有

我需要加载一个完整的旧页面,包括一些AJAX的AngularJS到我们的新页面中

起初它根本不起作用,我只是得到了简单的AngularJS标记

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加载我的页面后重新启动。