我正在尝试使用node / npm / browserify构建我的角度应用程序。 ./app/controllers,./app/directives,./app/services基本上都有index.js文件,而这些文件又需要()js文件!下面是根js文件,即public / index.js。
require('./app/controllers/');
require('./app/directives/');
require('./app/services/');
var app = angular.module('myApp', ['ngRoute'])
app.config(function($routeProvider) {
$routeProvider
.when("/movie/:movieId", {
template: require('./views/movie.html'),
controller: 'MovieCtrl as movie'
})
.when("/movie/:movieId/scene/:sceneId", {
template: require('./views/scene.html'),
controller: 'SceneCtrl as scene'
});
});
module.exports = app;
现在运行下面的命令后,我确实得到了一个bundle.js,
browserify public / index.js -o release / bundle.js
但是,bundle.js中的以下行会引发错误“Uncaught ReferenceError:app is not defined”
app.controller('MainCtrl', function ($route, $routeParams, $location, MyFactory) {
现在,我假设因为在index.js中指定了var app,它应该可以在MainCtrl.js中访问。有人可以建议我如何使这项工作?
-----添加更多信息------ app / controllers / index.js包含以下代码: -
require('./MainCtrl.js')
require('./MovieCtrl.js')
require('./SceneCtrl.js')
MainCtrl.js包含以下代码: -
app.controller('MainCtrl', function ($route, $routeParams, $location, MyFactory) {
//...
})
答案 0 :(得分:0)
我不知道你的代码中的哪一行......这个问题并不清楚,但无论如何:
现在,我假设因为在index.js中指定了var app,它应该可以在MainCtrl.js中访问。
这种假设是错误的。当你实例化你所包含的内容时,你需要传入一个你需要的引用。
例如......
var mainCtrl = new MainCtrl(app);
答案 1 :(得分:0)
好的,所以我有点理解发生了什么。 var app是本地的,在其他任何地方都无法访问。一旦我将应用程序设置为全局范围(这显然是一件可怕的事情!)和声明应用程序后所需的文件,它就有效了。这通常不是正确的做法,但正如我所说,这是一个非常初步的尝试。
app = angular.module('myApp', ['ngRoute'])
app.config(function($routeProvider) {
$routeProvider
.when("/movie/:movieId", {
template: require('./views/movie.html'),
controller: 'MovieCtrl as movie'
})
.when("/movie/:movieId/scene/:sceneId", {
template: require('./views/scene.html'),
controller: 'SceneCtrl as scene'
});
});
require('./app/controllers/');
require('./app/directives/');
require('./app/services/');