IIFE在角度控制器中

时间:2016-12-31 19:37:04

标签: javascript angularjs

我作为角度1.5及更低的新手遇到错误。我正在练习几门在线课程,所有人都使用不同版本的棱角分明1.我试图接近John Papa的风格指南,特别是IIFE&s的使用和控制器因为但我一直有问题。问题是关于将控制器包装在IIFE的单独文件中

@keywords internal

这总是可取的,还是有这种类型的代码会破坏执行的情况?

1 个答案:

答案 0 :(得分:2)

使用IIFE的主要原因是不污染全球范围。

如果你的代码没有用IIFE包装,那么父范围将包含变量 MyCtrl 。我们希望将MyCtrl保密,因为你永远不会自己调用这个函数。

现在您的问题可能是,"如果所有这些代码都是私有的,并且此范围之外的任何内容都无法访问 MyCtrl 来调用或使用它,那么它是什么?点?我甚至在做什么?"

这不是打破执行的原因"是因为我们正在做 我们需要的东西,让Angular从那里接受它。

如果您阅读了代码,那么您真正在做的是:

  

"嘿,Angular。采用已定义的模块' app' 和   给它一个我定义为 MyCtrl 的控制器。说出来   控制器' MyCtrl' 。"

您的所有代码都需要这样做。您已经为Angular提供了一个函数,可以用作特定模块的控制器,而且代码的其他部分也不应该知道它。