javascript - 工厂和 Controller 依赖错误

标签 javascript angularjs

我是 Angular JS 新手。我正在尝试在我的 Controller 和我的工厂之间建立依赖关系。 Controller :

var app = angular.module('app', ['ngRoute']);

    app.controller('MainViewController',['MainViewFactory', function ($scope, MainViewFactory ,$location) {

           //codes here

    }]);

这是工厂:

var app = angular.module('app');

app.factory('MainViewFactory' , function () {
    var factory = {};
    //factory codes here

    return factory;
});

但在加载页面时我遇到注入(inject)器错误

Uncaught Error: [$injector:nomod] Module 'app' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

<!DOCTYPE html>
<html >
<head>
    <meta charset="utf-8"/>
    <title></title>
    <link href="/public/css/bootstrap.min.css" rel="stylesheet">
    <link href="/public/css/font-awesome.min.css" rel="stylesheet"/>
    <link href="/public/css/style.css" rel="stylesheet"/>
    <link href="/public/css/style-blue1.css" rel="stylesheet" id="style_color"/>
    <link href="/public/css/jstree-themes/default/style.min.css" rel="stylesheet">
    <link href="/public/lib/toaster/toaster.css" rel="stylesheet">
</head>
<body ng-app="app" ng-controller="MainViewController" >
<div id="navbar">
    <span> </span>
</div>

<div id="container">
    <div id="tools">
        <button class="btn" ng-click="functions()"></button>
        <button class="btn" ng-click="setting()"></button>
        <button class="btn" ng-click="guide()"></button>
        <button class="btn" ng-click="contactUs()"></button>
    </div>
    <div id="content" ng-view=""> </div>
</div>
<script type="text/javascript" src="/public/lib/angular/angular.js"></script>
<script type="text/javascript" src="/public/lib/angular/angular-route.min.js"></script>
<script type="text/javascript" src="/public/lib/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="/public/app/factories/MainViewFactory.js"></script>
<script type="text/javascript" src="/public/app/controllers/MainViewController.js"></script>
</body>
</html>

帮我解决这个问题!

最佳答案

更新:

您应该将 Controller 放在工厂脚本之前。

<script type="text/javascript" src="/public/app/controllers/MainViewController.js"></script>
<script type="text/javascript" src="/public/app/factories/MainViewFactory.js"></script>

您不必为工厂再次声明相同的模块,您只需这样定义即可,

var app = angular.module('app', ['ngRoute']);
app.controller('MainViewController',['$scope','MainViewFactory','$location', function ($scope, MainViewFactory ,$location) {

    }]);
app.factory('MainViewFactory' , function () {
    var factory = {};
    //factory codes here

    return factory;
});

这是工作 Plunker

关于javascript - 工厂和 Controller 依赖错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33397363/

相关文章:

angularjs - JavaScript 和 AngularJS 的简单混合不显示来自 HTML &lt;input type ="file"的文件内容

javascript - 在这个例子中,有没有比使用 matchMedia 更聪明的方法来重新排列页面元素?

javascript - 当运行 block 中存在无限循环时,工厂中的 $http 成功回调不会运行

javascript - jQuery:绑定(bind) "CTRL+A"仅选择特定区域

javascript - 无法在 Javascript 测验中显示最终分数

javascript - 尝试让异步数据库请求在 Angular 中工作, "Cannot call method then of undefined"

javascript - Angularjs 文本区域验证需要并显示错误消息

javascript - JS 插件加载问题

javascript - 在子元素的指令中获取 CSS 属性

javascript - JQuery - 悬停时使图标变大