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

Kra*_*ats 8 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>
Run Code Online (Sandbox Code Playgroud)

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

所以这个想法如上面标题中所述 - 我加载了包含在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>
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

the*_*met 9

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

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

  angular.bootstrap($('#ajax-content-here'));
Run Code Online (Sandbox Code Playgroud)

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