【问题标题】:Correct use of parents scope properties正确使用父范围属性
【发布时间】:2015-09-18 06:41:48
【问题描述】:

我是 AngularJS 的新手,我不知道最佳实践,所以这是我的问题。

父母控制器属性的推荐用途是什么?我应该在整个 web 应用程序中使用不同的别名还是有另一种方式来使用父控制器的变量和方法?

我正在使用 partials html,如果部分没有 userCtrl 声明(因为它在部分上声明包括这个),似乎会让人感到困惑。

提前致谢!

【问题讨论】:

  • 尽可能地养成将每个“部分”视为自己独立程序的习惯。您可以使用指令、共享服务或事件的输入参数在每个单独的部分之间进行通信。您应该以这样一种方式设计局部,如果它们是页面上唯一呈现的东西,它们就可以发挥作用。

标签: angularjs scope parent controllers partials


【解决方案1】:

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

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

你的控制器不应该知道他的父母是什么。因为你能做到,并不代表你就应该去做。

要在控制器之间共享数据,请改用服务。这样更容易、更干净。

【讨论】:

  • 好的,我可以通过服务共享数据,但是如果我需要调用父控制器范围的方法呢?
  • 服务也可以存储函数。如果你真的需要在控制器上使用这个方法(如果这个方法不能在单例(服务)中并且真的依赖于控制器的实例),你可以使用 angular events .但是服务应该始终是您首先想到的:角度依赖注入是一个非常好的工具。
  • 我想我明白了。例如,为了控制用户登录,我应该有一个包含我需要的所有服务的服务,并将它注入我需要它的所有控制器中,并且在控制器中暴露给视图,执行如下操作:$scope.user = UserService.getUser( );
猜你喜欢
  • 2015-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-09
相关资源
最近更新 更多