仅在通过ajax加载的页面中使用Angular

时间:2013-06-03 14:18:06

标签: jquery angularjs angularjs-scope

<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>

我真的很有角度,所以请温柔!

所以这个想法就像上面标题中所说的那样 - 我加载了包含在head部分中的角度库的页面。后来我使用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>

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

谢谢!

2 个答案:

答案 0 :(得分:9)

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

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

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

假设ajax-content-here内的内容引用某些ng-app。 请查看http://docs.angularjs.org/guide/bootstrap

处的手动初始化部分

答案 1 :(得分:0)

<div ng-app id="angular-test">

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