嗨,我正在尝试实现angularjs +需求,但我得到的参数'HelloWorld‘不是一个函数,当我进入所需的路径时,得到了未定义的错误。
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
require(['app'], function (app) {
app.controllerProvider.register('HelloWorld', function ($scope) {
$scope.greet = function () {
return 'Hello World!'
}
});
});home.html
<div ng-controller="HelloWorld">
{{greet();}}
</div>正如我所理解的,当我去/home角查找一个名为HelloWorld的控制器时,它找不到抛出参数'HelloWorld‘不是一个函数,如果没有定义,那么我的调试器就会在home.js中被击中,但是我在屏幕上看到的只是{greet();}}
发布于 2014-03-03 14:33:51
很少的事情:
1.理想情况下, require.config应该放置在main.js中,然后使用以下方法加载到index.html中:
<script data-main="js/main.js" src=".../require.js"></script>2.尝试在路由中定义控制器并删除ng-controller home.html:
...
$routeProvider.when('/home', {
templateUrl: 'views/home.html',
controller: 'HelloWorld', // <-- Need to add this line
...3.您的home.js应该使用define而不是require,因为您在这里定义一个模块。
为了方便使用RequireJS和AngularJS,我创建了以下项目,您应该看看:
发布于 2014-03-03 15:36:10
好的..。在我看来不错。也许你的'App/home‘应该是'app/home’,不知道你是如何定义你的'App‘的。以防它还不起作用。尝试在你的配置中添加'app‘。
我制作了你的东西的工作版本:https://github.com/guilbep/smallrequirejsangularseed
https://stackoverflow.com/questions/22135789
复制相似问题