1

我是 angularjs 的新手

我正在尝试将 angularjs 与 requirejs 集成。我是如何得到错误的

Uncaught Error: No module: app

这是我的设置

主咖啡

require.config
baseUrl : "/Scripts/"
paths :
    jquery : 'libs/jquery/jquery-2.0.3'
    angular : 'libs/angular/angular'
    'angular-resource' : 'libs/angular/angular-resource'
    bootstrap : 'libs/bootstrap/bootstrap'
shim :
    angular :
        exports :'angular'
    'angular-resource':
        deps :['angular']
    jquery :
        exports: ['jquery']
    bootstrap : 
        deps :['jquery']
    app:
        deps :['app-boot']
require ['app-angular/modules/app','app-angular/modules/app-boot'], ($,angular)->

应用程序-boot.coffee

require ['jquery','angular','bootstrap'], ($,angular)->
$(document).ready ->
    angular.bootstrap document,['app']  

应用程序.coffee

define "app",['angular','angular-resource'], (angular)->    
angular.module 'app',['ngResource']

StudentController.coffee

require ["app"] , (app) ->
app.controller "StudentController" , ($scope) ->
    $scope.msg = "Hello Joy !! How are you !! You are in Angularjs"

还有我的 Index.cshtml

<div class="page-content">
<div ng-controller="StudentController">
    <p ng-bind="{{msg}}">
    </p>
</div>

但是它给出了错误Uncaught Error: No module: app

我还ng-app从 html 中删除了也已经在 domready 上手动引导了角度。那么我哪里错了?

4

2 回答 2

1

我认为您需要反转对这段代码的依赖:

app:
    deps :['app-boot']

是这样的:

'app-boot': {
    deps: ['app']
 }

您的app-boot.coffee文件取决于文件上定义app的模块app.coffee

于 2013-09-25T07:10:13.970 回答
0

看起来您正在遵循本指南,这是双倍的好。

我能够让它工作,但一直收到相同的错误消息,因为在我的 Angular 控制器中,没有定义“应用程序”。正如指南所述,似乎“app.controller”没有在那里设置,只需通过“require”语句加载它就足够了。”:

require(['jquery', 'underscore', 'backbone', 'users', 'angular', 'directives', 'app']

这和你的只有一点点不同。

/* shim */
require.config({
 shim: {
    underscore: {
        exports: '_'
    },
    backbone: {
        deps: ["underscore", "jquery"],
        exports: "Backbone"
    },
    "angular":{
        exports:"angular"
    },
    "directives":{/* this is my custom Angular directive */
        deps:["angular"]
    }
}
});

/* RequireJS module */
define("app", ["angular", "directives"], function(angular)
{
    var app = angular.module("app", ["zipppyModule"]);

    angular.element(document).ready(function()
        { angular.bootstrap(document,['zippyModule']); });
});

/* 'app' loads the module */
require(['jquery', 'underscore', 'backbone', 'users', 'angular', 'directives', 'app']
于 2013-10-03T22:40:47.450 回答