我对角度很新,并试图真正学习如何组织我的代码,所以未来的同事将能够快速找到他们的方式.
我知道的一条规则是"如果它操纵DOM,将其置于指令中",我遵守.
但有时我不确定在哪里放置我的方法,因为我可以将它们放入主app控制器,作为指令中作为"控制器"选项提供的控制器,甚至在指令中的函数内(选项) "链接").
使用过滤器和服务对我来说非常清楚,但是对于控制器和指令,线路变得相当模糊.我已经意识到,即使有一个小应用程序,我也会在这里和那里传播一些代码,这已经令人困惑,甚至对我自己也是如此.所以我想让一些Tipps更好地组织我的代码.
所以我想我的主要问题是:
1)是否有一个很好的经验法则可以知道放在哪里的代码?
或者,如果这是太抽象,这里有一些例子:
2)我有一个模板的指令,我只在我的应用程序中使用.当我点击元素时,会发生一些事情.我已经知道最好使用ng-click指令来绑定链接函数中的click事件.
但是,我应该在哪里定义ng-click提供的方法?
3)如果我计划在别处重复使用该指令,2)的答案是否会有所不同?
4)不同的场景:
我有一个按钮,当点击并拖动时,它应该移动一个完全不相关的元素.
我是不是该...
注意:
我知道答案可能有点依赖于个人意见,但我希望有一些"规则"或"正确的方法",我可以遵守这些规则以便将来发展.出于简明的原因,我没有包含任何代码.如果答案需要,我很乐意提供.
感谢您的时间.
我有一个扩展原始模块的插件.
它只应在明确要求时修改模块.
问题:
只要需要一次,原始模块就会永久修改,也适用于插件不是依赖项的情况.
这里的顺序无关紧要,只需要一次插件即可.
例:
define("main", [], function() {
return {opt: "A"};
});
define("plugin", ["main"], function(obj) {
obj.opt = "B";
});
require(["main", "plugin"], function(obj) {
console.log(obj.opt); // should log B
});
require(["main"], function(obj) {
console.log(obj.opt); // should log A but logs B
});
Run Code Online (Sandbox Code Playgroud)
我想要走的路是以某种方式告诉要求总是main从源重新加载而不是使用缓存版本.
我不知道怎么样.
或者也许有更优雅的方式?
伙计们,请赐教.
小提琴:http://jsfiddle.net/r75e446f
更新:有些人可能会发现知道我需要为我的业力单元测试环境测试带有和不带插件的模块这一点很重要.
更新2:请看下面我自己的解决方案.