javascript - jQuery 加载 <script> 但在 AngularJS 下不评估相同内容

标签 javascript jquery ajax angularjs

我正在开发一个单页应用程序,我打算尽可能保持模块化。另外,这将是一个相当大的应用程序,因此,我打算仅在加载关联 View 时才加载 Controller 。为了实现相同的目标,我按以下方式构建了我的代码:

app.js

var app = angular.module("app", ['ngRoute']).config(function($httpProvider) { 
    $httpProvider.defaults.headers.common['X-Requested-With'] = "XMLHttpRequest";
    $httpProvider.defaults.headers.post['Content-Type'] = "application/x-www-form-urlencoded; charset=utf-8";
});

路由.js

app.config(function($routeProvider) {
    $routeProvider.when("/user/login", {
        templateUrl: "/user/login.html",
        controller: "LoginCtrl"
    });
});

用户/login.html

<script type="text/javascript" src="/js/user/login.js"></script>
<div>
    <!-- Complete Login Form -->
</div>

js/user/login.js

app.controller("LoginCtrl", function() {
    // Login related functionality
});

现在,我面临的问题是 login.html 模板加载正确。此外,正在发送 login.js 请求并成功接收响应。但是,我仍然收到来自 AngularJS 的错误,说 LoginCtrlundefined。我对此进行了研究,发现包含 jQuery 可以解决问题,但这并没有发生。我尝试在 login.js 文件中添加一个简单的警报,但弹出窗口也没有出现。

非常感谢您在此事上的任何帮助。

最佳答案

您需要更改登录 Controller 的位置

app.config(function($routeProvider) {
    $routeProvider.when("/user/login", {
        templateUrl: "/user/login.html",
         //controller: "LoginCtrl" // remove this
    });
});

并像这样替换html

<script type="text/javascript" src="/js/user/login.js"></script>
<div ng-controller="LoginCtrl">
    <!-- Complete Login Form -->
</div>

关于javascript - jQuery 加载 &lt;script&gt; 但在 AngularJS 下不评估相同内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24979169/

相关文章:

javascript - 404 响应对于搜索服务是否合理?

javascript - AJAX 调用的空主体问题

jquery - 如何使 jQuery 自动完成仅替换某些单词 - 而不是完整字符串?

jquery - 在移动/桌面模式之间切换时如何启用/禁用某些 css 属性?

javascript - 将变量传递给 html 标记中的 javascript 函数

javascript - 单击 html 按钮运行 PHP 函数

javascript - 处理 Sketch 无法在 JavaScript 模式下工作

javascript - 在 Canvas 中填充更多类型的相似对象

javascript - 比较两个 object.attribute 还是比较两个对象更快?

javascript - $(selector).load(URL) 之后表准备就绪时运行代码