8
<html>
<head>
  <title></title>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js"></script>
</head>
<body>
    <div id="ajax-content-here">

    </div>
</body>
</html>

我对角度很陌生,所以请温柔一点!

所以这个想法正如标题中所述 - 我加载我的页面,其中包含头部部分中的角度库。后来我使用ajax(jquery)将数据(如下)加载到div容器中。

<div id="angular-test">
    <div>
      <label>Name:</label>
      <input type="text" ng-model="yourName" placeholder="Enter a name here">
      <hr>
      <h1>Hello {{yourName}}!</h1>
    </div>
</div>

我想以某种方式将 angular 初始化为仅#angular-test在 ajax 请求完成后在容器内处于活动状态。我认为它与范围对象有关吗?

谢谢!

4

2 回答 2

9

一旦 DOM 完成加载(在 DOMContentLoaded 事件上),Angular 就会进行初始化(包括寻找 ng-app 和模板编译)。Angular 无法知道 DOM 是否已更改,并且一旦收到 AJAX 响应,就会稍后将 ng-app 添加到 DOM 中。

因此,您可以在 DOM 真正完成后尝试手动初始化引导程序(即在您的 jquery ajax 回调中,在您分配给 innerHTML 之后)。在回调中执行以下操作:

  angular.bootstrap($('#ajax-content-here'));

假设里面的内容ajax-content-here是指一些ng-app. 查看http://docs.angularjs.org/guide/bootstrap的手动初始化部分

于 2013-06-03T19:59:31.353 回答
0
<div ng-app id="angular-test">

ng-app部分将在内部初始化角度angular-test

于 2013-06-03T14:36:09.577 回答