angularjs + requirejs =参数“控制器”不是一个函数,得到了不确定 [英] angularjs + requirejs = Argument 'controller' is not a function, got undefined
问题描述
您好我想实现angularjs + requirejs,但我得到论证'的HelloWorld'是不是一个函数,得到了不确定的错误,当我去所需的路径
Hi i am trying to implement angularjs + requirejs but i get Argument 'HelloWorld' is not a function, got undefined error when i go to desired path
app.js
require.config({
baseUrl: "",
paths: {
'domReady': 'Scripts/RequireJs/dom-ready/domReady',
"angular": "Scripts/AngularJs/angular",
"angular-route": "Scripts/AngularJs/angular-route",
"angular-resource": "Scripts/AngularJs/angular-resource",
},
shim: {
"angular": {
exports: "angular"
},
"angular-resource": {
deps: ["angular"]
},
"angular-route": {
deps: ["angular"]
}
}
});
define('app', ['angular', 'angular-route'], function (angular) {
var app = angular.module('app', ['ngRoute']);
app.config(function ($routeProvider, $controllerProvider, $compileProvider, $filterProvider, $provide) {
app.controllerProvider = $controllerProvider;
app.compileProvider = $compileProvider;
app.routeProvider = $routeProvider;
app.filterProvider = $filterProvider;
app.provide = $provide;
$routeProvider.when('/home', {
templateUrl: 'views/home.html',
resolve: {
load: ['$q', '$rootScope', function ($q, $rootScope) {
var deferred = $q.defer();
require(['App/home'], function () {
$rootScope.$apply(function () {
deferred.resolve();
});
});
return deferred.promise;
}]
}
});
});
require(['domReady!'], function (document) {
angular.bootstrap(document, ['app']);
});
return app;
});
home.js
home.js
require(['app'], function (app) {
app.controllerProvider.register('HelloWorld', function ($scope) {
$scope.greet = function () {
return 'Hello World!'
}
});
});
home.html的
home.html
<div ng-controller="HelloWorld">
{{greet();}}
</div>
据我了解,当我去到/ home角度查找一个名为HelloWorld不能找到它抛出参数的HelloWorld控制器发生了什么不是一个函数,得到了不确定的话我的调试器被击中的home.js但我看到屏幕{{迎接();}}
as i understand whats happening when i go to /home angular looks for a controller named HelloWorld cant find it throws Argument 'HelloWorld' is not a function, got undefined then my debugger gets hit in home.js but all i see on screen is {{greet();}}
推荐答案
几件事情:
1 require.config
最好应放置在 main.js
并装载在你的 index.html的
使用:
1. require.config
should ideally be placed inside a main.js
and loaded in your index.html
using:
<script data-main="js/main.js" src=".../require.js"></script>
2 尝试在你的路线来定义控制器,并删除 NG-控制器
home.html的:
2. Try to define controller in your route and remove ng-controller
home.html:
...
$routeProvider.when('/home', {
templateUrl: 'views/home.html',
controller: 'HelloWorld', // <-- Need to add this line
...
3 您home.js应该使用定义
而不是要求
作为你在这里定义的模块。
3. Your home.js should be using define
instead of require
as you are defining a module here.
我创建了以下项目,以方便使用RequireJS和AngularJS的,你应该看一看:结果
https://github.com/marcoslin/angularAMD
I created the following project to facilitate the use of RequireJS and AngularJS that you should take a look:
https://github.com/marcoslin/angularAMD
这篇关于angularjs + requirejs =参数“控制器”不是一个函数,得到了不确定的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!