当前位置: 首页 > 面试题库 >

AngularJS不会在ng-view中加载脚本

丌官浩旷
2023-03-14
问题内容

我有一些特定于视图的脚本。但是,当angularjs加载视图时,该脚本似乎没有执行。

Index.html

<html>
  <body ng-app="adminApp">

    <div ng-view=""></div>

    <script src="bower_components/angular/angular.js"></script>
    <script src="scripts/app.js"></script>
    <script src="scripts/controllers/main.js"></script>

</body>
</html>

Main.html- 在ng-view下加载

hello world
  <script>

    alert('Hello, John!')

  </script>

在此示例中,当页面加载时,我看到网站上印有一个基本的hello世界。但是,我没有弹出任何消息说“你好,约翰”。

知道为什么我无法加载特定于某个视图的脚本吗?

额外信息 app.js

'use strict';

angular.module('adminApp', [])
  .config(function ($routeProvider) {
    $routeProvider
      .when('/', {
        templateUrl: 'views/main.html',
        controller: 'MainCtrl'
      })
      .otherwise({
        redirectTo: '/'
      });
  });

控制器/main.js

'use strict';

angular.module('adminApp')
  .controller('MainCtrl', function ($scope) {
    $scope.awesomeThings = [
      'HTML5 Boilerplate',
      'AngularJS',
      'Karma'
    ];
  });

问题答案:

这就是 jqLit​​e的 工作方式。如果要评估模板中的脚本,请在AngularJS之前添加 jQuery
。如果包含jQuery,则将评估脚本。尝试删除jQuery,您会看到最初观察到的行为。

更新 :由于有人要求在评论中进行详细说明,因此这里是:

当路由匹配时,ngView使用jqLit​​e的(或jQuery的,如果已加载)html()方法设置元素的内容(ngView声明为on)。换句话说,ngView.link()执行以下操作:

$element.html(template)

因此,归结为如何html()在jqLit​​e和jQuery中实现。jqLit​​e使用native
innerHTML属性,该属性仅设置内容,但不评估脚本。另一方面,jQuery解析出所有脚本标签并执行它们(通过在页面上构造和添加脚本DOM元素)。



 类似资料:
  • 问题内容: 嘿,我正在建立一个有角度的网页。问题是已经有一些东西没有角度了,我也必须包括它们 问题是这样的。 我的main.html中有这样的内容: 我的partial.html有这样的东西 我的partial.js与angularjs无关。nginclude工作正常,我可以看到html,但根本看不到正在加载的javascript文件。我知道如何使用firebug / chrome-dev-too

  • 问题内容: 我已经工作了几个小时,以使我的链接可以通过AngularJS应用点击进入不同的视图。 但是,我似乎只能在Plunker上在线使用该功能。 我一直在尝试在本地计算机上测试点击功能,并且ng-view似乎未加载。当我下载我知道正确的Plunker代码时,因为它可以在Plunker上运行,所以ng- view在本地托管后似乎停止工作。 我对ng-include和我定义为自己的HTML标签的指

  • 问题内容: 我有2个html页面,以及这两者都是“插入”到通过在URL dependending 属性和路由器供应商,作为我的AngularJS应用程序的一部分。 可以在AngularJS主页 的“连接后端” 下找到一个示例。 我的问题 :有没有办法动画化和之间的过渡? 问题答案: Angularjs 1.1.4现在引入了该指令以帮助动画化不同的元素,尤其是ng- view。 您也可以观看有关此新

  • 问题内容: 我正在尝试在应用程序中使用AngularJS,并在某种程度上取得了成功。 我能够获取数据并将其显示给用户。我有一个按钮,我想通过该按钮发布DELETE请求。下面是我的代码。 这是获取信息并将其显示给用户的功能。 数据已获取并正确显示。 但是,单击删除按钮后,不会触发其中的代码。在GoogleChrome浏览器的开发人员工具中,我可以看到为代码生成了有效值,但未触发代码。从我尝试去掉花括

  • 尝试运行我的XML时出现以下错误。看起来它有问题加载类,但我有正确的类路径。 org.testng.testngexception:org.testng.testng.initializeSuitesandjarFile(testng.java:340)(org.testng.remote.abstractremotetestng.run(abstractremotetestng.java:109

  • 问题内容: 我对所有页面都有一个通用模板,其中包含一个菜单栏,它位于.bar的外面。我位于其中一个页面的内部,我想将输入数据绑定到此模板区域(该区域位于与输入页面不同的控制器下) )。我的意思是当我输入名称时,该名称将出现在模板区域。可以吗?这是the **** 问题答案: 通过遵循始终具有“’ ”的“最佳实践”,可以很容易地避免使用基元出现此问题。在您的ng模型中 -观看3分钟值得。Misko演