我正在尝试在 angularjs 中设置一些嵌套视图。我一直在使用ui-router库来执行此操作,这在大多数情况下都非常有用。问题是每个视图都有一个单独的控制器,它们之间没有真正的继承。如果我想从子控制器修改父控制器中的某些内容,我必须使用 $scope.$parent 。这有点麻烦,如果有多个继承级别,并且您必须记住您正在访问的变量位于哪个级别,它可能会变得更糟。此外,如果您忘记在子控制器中使用 $parent 并尝试修改父变量之一,Angular 将创建该变量的新实例,这可能会导致一些难以追踪的错误。
理想情况下,我只能使用原型继承。这也可以很好地映射到 Typescript 或 Coffeescript 中的类。我想到的一种方法是摆脱所有的父控制器,只让子控制器继承原型(超类)的任何通用功能。然后,您只需将控制器放在 $rootScope 上,以便父视图可以访问它。
谁能想到这个解决方案或更好的解决方案有什么问题?我最好只使用 $parent 并让 Angular 处理“继承”。
谢谢