如果不需要html,可以使用$ scope

时间:2015-01-29 10:49:43

标签: javascript angularjs

当你在控制器中并且需要创建一个变量或函数时,将不会从html中使用。你还应该把它放在$ scope吗?

$scope.myFunction = function(){
     //(...)
     return true;
}

var myFunction = function(){
    //(...)
    return true
}

2 个答案:

答案 0 :(得分:0)

$scope可以看作是你的html和你的控制器之间的粘合剂。它的唯一目的是能够在其上放置一些东西并能够在视图或控制器上访问它。

因此,如果您只需要控制器上的某些内容,则无需将其放在$scope上,因为该视图无需访问它。

即使把它放在$scope上也更容易测试,但这并不是一个好主意,因为你正在改变你的代码做某事"不那么好"只是为了测试。

通常情况下(有角度的是用例)当你发现你拥有这个"私人"方法是创建服务。服务不仅用于共享数据,还用于执行数据背后的业务逻辑。随意将绑定绑定到控制器并将工作委托给服务。这样就可以获得一个瘦控制器和可测试的组件。

答案 1 :(得分:0)

如果你的观点没有使用它,你就不需要(也不应该)把它放在$ scope上。

从测试的角度来看: - 如果myFunction没有公开(在这种情况下通过你的视图),你无论如何都不会直接测试它(你不要这样做)单元测试私有方法),但测试将间接包含在您将为访问myFunction的公共函数编写的测试中。 因此,即使在考虑测试时,也不需要将其放在$ scope上。