在 jquery.load 页面中使用 angularjs

Posted

技术标签:

【中文标题】在 jquery.load 页面中使用 angularjs【英文标题】:Using angularjs inside a jquery.load page 【发布时间】:2014-03-09 23:28:00 【问题描述】:

我正在编写一个 Web 应用程序来容纳多设备应用程序。我已经使用 nodejs、socket.io 和 express 构建了处理视图分布的框架。 该框架提供了一个控制视图和组更改的基本布局,并且使用 jQuery .load 调用将实际内容加载到 div 元素中。

在我的测试应用程序中,我正在尝试使用 AngularJS 实现 MVC 类型的架构,但 Angular 无法加载并且从 .load 函数加载时无法工作。

我搜索了这里的论坛并用 Google 搜索了很多,我发现的唯一其他帖子是:https://groups.google.com/forum/#!msg/angular/LufmNlNSxBM/c6rR7Ao1PPgJ

但是,我试图避免我的框架和 Angular 之间的耦合,有没有人知道使用 jQuery 的 .load 方法加载时加载 Angular 的方法?

(如果这个问题不符合 SO 规则,我深表歉意,这是我的第一篇文章。如果有任何模棱两可的地方,或者需要更改,我会这样做)

编辑:

Require.js 解决了这个问题,这是我的解决方案和代码:

(main.js) 用于配置 require 和添加依赖项(这可以扩展为包括所有需要的依赖项,我只是使用最小的来让它加载和运行 angular

require.config(
    paths: 
        angular: 'lib/angular/angular.min',
        jquery: 'lib/jquery-1.11.0.min',
        app: 'app',
    ,
    shim: 
        angular: 
            deps: ['jquery'],
            exports: 'angular'
        ,   
    
);

然后我创建了一个包含在我动态加载的页面中的脚本,如下所示: (加载Angular.js)

require([
      'angular',
      'app'
//      'services/services',
//      'controllers/controllers',
//      'directives/directives'
    ], function(angular) 
        angular.bootstrap(document, ['MyApp']);
    );

最终,注释的行将被使用,并且取消注释。

最后,这是我加载到页面上的代码,它只是使用 ng-model 并在文本框中显示数字。这纯粹用于测试目的。 (test.html)

<div id='unique' ng-app='MyApp'>
    <form action="">
        <input type="number" ng-model='number'>
        <br>
    </form>
    <h1>The number is currently number.</h1>
</div>

<script src = "/js/loadAngular.js"></script>

【问题讨论】:

请您提供一些代码吗?另外,尽量避免使用“它在 xx 时不起作用”之类的短语,它们不会告诉读者任何事情! :) 对于网站的新手来说,这里有一些很棒的读物:***.com/help/asking 【参考方案1】:

使用Require.js来加载angular.js,你可以用它来控制加载到哪些视图上,哪些视图上不加载。请看下面的例子

http://www.codeproject.com/Articles/637430/Angular-js-example-application

【讨论】:

非常感谢,正是我想要的。我自己永远也不会发现! @mem27 很高兴能提供帮助。祝你好运!!

以上是关于在 jquery.load 页面中使用 angularjs的主要内容,如果未能解决你的问题,请参考以下文章

jquery load加载动态页面

控制使用jquery load()方法载入新页面中的元素

带有表单数据的 Jquery .load()

使用jquery load遇到一个问题解决

jQuery load和unload函数使用

可以使用 jQuery.load() 函数加载 ASCX 吗?