Angularjs 正确使用父作用域属性

Angularjs 正确使用父作用域属性,angularjs,scope,parent,controllers,partials,Angularjs,Scope,Parent,Controllers,Partials,我对AngularJS非常陌生,我不知道最佳实践,所以这里是我的问题 建议如何使用父控制器属性?我应该在整个webapp中使用不同的别名,还是有其他方法使用父控制器的变量和方法 我使用的是partials html,当partial没有userCtrl声明时(因为它是在一个包含这个声明的partial上声明的),它可能会让人困惑,请参见userCtrl.doSomething 提前谢谢 您应该避免使用未在控制器中声明的$parent和scope变量 为什么?因为如果使用它,控制器将直接依赖于实例

我对AngularJS非常陌生,我不知道最佳实践,所以这里是我的问题

建议如何使用父控制器属性?我应该在整个webapp中使用不同的别名,还是有其他方法使用父控制器的变量和方法

我使用的是partials html,当partial没有userCtrl声明时(因为它是在一个包含这个声明的partial上声明的),它可能会让人困惑,请参见userCtrl.doSomething


提前谢谢

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

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

你的控制者不应该知道他的父母是什么。因为你能做到,并不意味着你应该去做


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

好的,我可以与服务共享数据,但如果我需要调用父控制器作用域的方法,该怎么办?服务也可以存储函数。如果确实需要在控制器上使用此方法(如果此方法不能在单例(服务)中,并且确实依赖于控制器实例),则可以使用角度事件。但是服务应该始终是您首先想到的:角度依赖注入是一个非常好的工具。我想我理解。例如,为了控制登录的用户,我应该拥有一个包含我所需要的所有内容的服务,并将其注入我所需要的所有控制器中,并在向视图公开的控制器中执行如下操作:$scope.User=UserService.getUser();尽可能多地养成习惯,把每一个“部分”看作是它自己的独立程序。您可以将输入参数用于指令、共享服务或事件,以在每个单独的分部之间进行通信。您应该以这样一种方式设计分区:如果它们是页面上呈现的唯一内容,那么它们就可以正常工作。