2015-07-01 74 views
0

我对AngularJS真的很陌生,我不知道最佳实践,所以这里是我的问题。正确使用父母范围属性

父母控制器属性的建议用途是什么?我应该通过整个webapp使用不同的别名,还是有另一种方法来使用父控制器的变量和方法?

我使用partials html,似乎它可能会令人困惑请参阅userCtrl.doSomething当部分没有userCtrl的声明(因为它声明的部分多数民众赞成在此包括)。

在此先感谢!

+1

尽可能地把每个“偏”的思维习惯作为自己的独立程序。您可以将输入参数用于指令,共享服务或事件以在每个单独的部分之间进行通信。你应该设计partials,以便它们可以在页面上呈现的唯一东西时发挥作用。 – Claies

回答

0

您应该避免使用$ parent以及未在控制器中声明的范围变量。

为什么?因为如果你使用它,你的控制器将直接依赖于你实例化的地方(ng-controller)。所以你不会尊重MVC模式。您的控制器不应该依赖于视图。

你的控制者不应该知道他的父母是什么。因为你可以做到这并不意味着你应该这样做。

要在控制器之间共享数据,请改为使用服务。这更简单,更清洁。

+0

好的,我可以共享数据惠特服务,但是如果我需要调用父控制器范围的方法呢? –

+0

**服务也可以存储功能**。如果您真的需要在控制器上使用此方法(如果此方法不能处于单例(服务)并且真正取决于控制器的实例),则可以使用**角度事件**。但是服务应该始终是你首先想到的:角度依赖注入是一个非常好的工具。 –

+0

我想我明白了。例如,为了控制用户登录,我应该有一个我需要的服务,并将其注入到所有需要它的控制器中,并在控制器中公开给视图,如下所示:$ scope.user = UserService.getUser( ); –