我想在 directive.js 中编写指令,并在 controller.js中编写控制器
但是我必须在每个文件中写class A
{
};
class B0: public A
{
};
static void f(B0 * b)
{
}
int main() {
A * a = new B0();
B0 * b = new B0();
f(a); // compiler error
f(b);
delete a;
delete b;
}
和app的配置?
有没有简单的方法来写它们?
答案 0 :(得分:2)
不要采用“yo angular”的简单回答。这使您无法了解如何根据应用程序的需要设置自己的构建。
就目录结构而言,我使用如下内容:
如果你有其他东西要进入你的应用程序/那么你可以将所有功能移动到一个文件夹,即“模块”
关于我如何启动模块代码以及该模块的关系控制器/指令等。它看起来像下面的块:
文件:app / foo / foo.js
$cyldata = $_POST['cylinder']; //this is the post from top.
$num_elements = 0;
while($num_elements < count($cyldata['serie'])){
$cylinder = new Cylinder();
$cylinder->serie = $cyldata['serie'][$num_elements];
$cylinder->type = $cyldata['type'][$num_elements];
$cylinder->admission = $cyldata['admission'][$num_elements];
$cylinder->seriesap = $cyldata['seriesap'][$num_elements];
$cylinder->save
$num_elements++;
}
文件:app / foo / controllers / foo.fooController.js
(function() {
angular.module('foo', []);
})();
文件:app / foo / directives / foo.fooDirective.js
(function() {
function fooController() {
// controller code
}
angular.module('foo').controller('fooController', fooController);
})();
答案 1 :(得分:1)
您不必在全局范围内缓存模块,您可以在每个文件/每次需要时使用getter syntax of module angular.module('app')
。有了这个,你不会通过放置变量ex: - app
来污染全局范围,以便能够在其他地方使用它。
controller.js:
//controller def
angular.module('app').controller('myCtrl', MyCtrl);
directive.js:
//directive def
angular.module('app').directive('myDir', MyDir);
只是不要在其他地方执行angular.module('app',[])
重新初始化模块。
答案 2 :(得分:0)
我也很难接受这个概念。归结为此。
首先将AngularJS Module
视为namespace
声明,然后考虑以下内容。
给定一个名为&#34; foo&#34;的应用程序命名空间,您可能有几个文件组成了您的应用程序,但您希望所有这些文件只是扩展&#34; foo&#34;命名空间。 AngularJS&#39;模块功能有两个原型;第一个采用两个参数,第二个只采用一个参数。在主模块文件中(让它称之为首先加载的文件),您将使用两个参数版本初始化您的应用程序并定义您希望Angular包含哪些外部模块。
以下代码示例显示了这两种格式的用法。第一个展示了如何执行模块的初始声明。注意第二个参数,它是一个字符串数组,用于标识模块所依赖的模块;即使您没有依赖项,也必须提供空数组。
//main.js
(function(angular,undefined){
"use strict";
angular.module("foo", ["ui-router"]);
})(angular);
在示例的第二部分中,您应该注意到没有第二个参数。这基本上告诉Angular你已经在其他地方初始化了模块,现在你只是想添加它。
//bar-controller.js
(function(angular,undefined){
"use strict";
angular.module("foo")
.controller("bar", ["$scope", "$state", function($scope, $state){
//Do controller stuff
});
})(angular);
至于如何整理文件?那取决于你。无论你和你的应用程序有什么意义。 AngularJS真的不关心文件系统的结构,除了模板的所有路径都相对于&#34; main&#34; js文件。
答案 3 :(得分:0)
据我了解,您需要知道的是,如果您必须在每个包含Angular代码的.js文件中声明一个app变量...(问题的标题与内容不匹配)
简短回答:否
您可以这样声明角度应用
var myAppModule = angular.module('myApp', []);
这将允许您声明控制器,服务等..像这样
myAppModule.controller('MyCTRL', ['dep1','dep2', function(dep1,dep2){
//...
}]);
或者您可以将其声明为模块而不为其指定变量
angular.module('myAppModule', []);
然后你必须声明控制器,服务等...像这样
angular.module('myAppModule').controller('MyCTRL', ['dep1','dep2', function(dep1,dep2){
//...
}]);
现在,要完全回答您的问题,一旦声明了模块,就不必再次声明它,只需记住在具有de控制器的模块之前加载包含app模块声明的.js文件。 ,指令,服务等。
你也应该看看这个:'Best' way to declare a module