gpt4 book ai didi

javascript - AngularJS 中的继承和嵌套 View

转载 作者:行者123 更新时间:2023-11-28 02:00:34 25 4
gpt4 key购买 nike

我正在尝试在 angularjs 中设置一些嵌套 View 。我一直在使用ui-router库来做到这一点,在大多数情况下效果很好。问题是每个 View 都有一个单独的 Controller ,它们之间没有真正的继承。如果我想从子 Controller 修改父 Controller 中的某些内容,我必须使用 $scope.$parent 。这有点麻烦,如果有多个继承级别,并且您必须记住正在访问的变量位于哪个级别,情况可能会变得更糟。此外,如果您忘记在子 Controller 中使用 $parent 并且尝试修改父级的变量之一,Angular 将创建该变量的一个新实例,这可能会导致一些难以追踪的错误。

理想情况下,我只能使用原型(prototype)继承。这也可以很好地映射到 Typescript 或 Coffeescript 中的类。我想到的一种方法是摆脱所有父 Controller ,而只拥有子 Controller ,这些子 Controller 将从原型(prototype)(父类(super class))继承任何常见功能。然后,您只需将 Controller 放在 $rootScope 上,以便父 View 可以访问它。

任何人都可以想到此解决方案或更好的解决方案的任何问题吗?我如果只使用 $parent 并让 Angular 处理“继承”会更好吗?

谢谢

最佳答案

如果稍微修改源代码,您应该能够启用原型(prototype)继承。

打开文件 ./ui-router/src/viewDirective.js,您应该在顶部附近找到它:

var directive = {
restrict: 'ECA',
terminal: true,
transclude: true,
...

添加另一行,内容如下:

var directive = {
restrict: 'ECA',
terminal: true,
transclude: true,
scope: true,
...

这应该启用继承。我找不到这方面的良好直接来源,但是 this you tube playlist充满了各种棱 Angular 分明的优点。

关于javascript - AngularJS 中的继承和嵌套 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18496104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com