【问题标题】:angularjs external controller file results in error 'angular is not defined'angularjs 外部控制器文件导致错误“未定义角度”
【发布时间】:2018-05-03 12:05:39
【问题描述】:

我在外部文件中定义了以下控制器,但是当我尝试运行我的节点服务器时,出现“未定义角度”错误。

vaultcontroller.js

angular.module('demoapp.vaultcontroller', [])
.controller('vaultcontroller', function($scope, appFactory){

    console.log("INSIDE APP CONTROLLER.");

    $("#success_holder").hide();
    $("#success_create").hide();
    $("#error_holder").hide();
    $("#error_query").hide();

    $scope.get_all_currencies_from_vault = function(){
        console.log("VAULT CONTROLLER IS CALLED -1 ");
        appFactory.queryAllTuna(function(data){
            var array = [];
            for (var i = 0; i < data.length; i++){
                parseInt(data[i].Key);
                data[i].Record.Key = parseInt(data[i].Key);
                array.push(data[i].Record);
            }
            array.sort(function(a, b) {
                return parseFloat(a.Key) - parseFloat(b.Key);
            });
            $scope.all_tuna = array;
        });
    }
});

这是 package.json

"dependencies": {
    "angular": "1.6.5",
    "angular-route": "1.6.5",
    "body-parser": "latest",
    "ejs": "latest",
    "express": "latest",
    "fabric-ca-client": "^1.0.2",
    "fabric-client": "^1.0.2",
    "grpc": "1.11.0",
    "morgan": "1.9.0"
},

这是错误跟踪:

angular.module('demoapp.vaultcontroller', [])
^

ReferenceError: angular is not defined
    at Object.<anonymous> (D:\Project-code\demo-POC\demopoc\client\vaultcontroller.js:2:1)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (D:\Project-code\demo-POC\demopoc\client\routes.js:5:23)
    at Module._compile (module.js:652:30)

这是我的 index.html 导入

<!-- require jquery and bootstrap scripts -->
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.5/angular.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular-route.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>

更新 1 正在加载保管库控制器

在 app.js 文件中,我做了以下操作。

.when('/vault', {
  templateUrl: 'vault.html',
  controller: 'vaultcontroller'
})

上面发布了 Vaultcontroller 的代码。然后我在 app.js 中完成了以下操作

var demoapp = angular.module('application', ["ngRoute", "application.vaultcontroller"]);

然后使用脚本在 index.html 中导入文件。

<!-- requiring the angular page -->
<script type="text/javascript" src="app.js"> </script>
<script type="text/javascript" src="vaultcontroller.js"> </script>

如果需要更多代码,请告诉我。角度新手

Update-2 > 解决方案 好的,我从@Aleksey Solovey 那里得到了一些帮助,正如他建议的那样,我安装了一个单独的服务器 http-server 来传递我的静态文件,早些时候我的节点服务器也在传递静态文件。我从 server.js 中删除了该部分,但没有收到任何上述错误,它开始工作。我现在有两个网址 1. 对于静态内容 > localhost:8080 2. API server(node写的,使用server.js启动)> localhost:8000

感谢您的帮助。

【问题讨论】:

  • 我已经在 index.js 中添加了脚本,它已经在 html 页面中了。
  • 等等,我需要在每个页面中添加它吗?我有一个主要的 index.html,其中有一个
    ,index.html 包含所有文件。甚至控制器的文件也在那里。
  • 你是如何加载你的demoapp.vaultcontroller 模块的?
  • 我已经更新了我的问题,我希望这就是您加载模块的意思。
  • 我无法立即看出问题所在,但有一个简单的答案:您的脚本看不到angular.js(查找angular 变量的引用),这意味着它们已在它之前加载。 vaultcontroller.js 脚本是否在 angular.js 脚本之后出现?

标签: angularjs angular-controller


【解决方案1】:

您需要添加打击

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>

【讨论】:

  • 感谢 Velu 的回答我已经在 index.html 主页面中定义了导入。
猜你喜欢
相关资源
最近更新 更多
热门标签