2014-11-06 93 views
0

根据该角文档:

范围是应用控制器和视图之间的粘合剂。在模板链接阶段,指令在范围上设置$ watch表达式。 $ watch允许向指令通知属性更改,这允许指令将更新的值呈现给DOM。

现在我的问题是:如果我的功能没有连接到的观点,我们应该使用$范围或不

+1

我认为你不应该。它会提高您的应用程序性能,因为未连接到范围的功能将不会在每个摘要循环中进行检查。 – akn 2014-11-06 07:57:23

回答

2

我假设你的意思是如果你应该做$ scope.functionName = function(),即使函数没有连接到视图。

不,你不应该,为什么你会暴露一个功能的视图,这是不需要的视图?此外,只有使用函数funcName()时,您才能更好地了解哪些函数在内部。

+0

正确,那是我的想法,但不使用$ scope,可以使该函数成为全局的。它可以从任何地方访问。对? – 2014-11-06 08:57:11

+0

我不这么认为。它仍然在控制器的背景下。 – Ngschumacher 2014-11-06 10:16:11

1

您不应该使用$scope来声明您正在使用的每个函数,特别是如果它没有连接到视图。

但是,有些情况下需要在未连接到视图的函数中使用$scope,例如,如果要在范围树上发出/接收/广播消息或访问父范围上的某些内容(尽管这不是一个好习惯)。

+0

如果您想发射/接收/ brodcast,您可以使用服务并将$ scope作为参数传递给该服务的某种方法。 – 2014-11-06 08:40:05

+0

不使用$范围,不会使它成为全局函数 – 2014-11-06 08:57:39