V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
johnnyb
V2EX  ›  JavaScript

Angular 中通过 $scope.$parent 覆盖父类方法的做法合适吗?

  •  
  •   johnnyb · 2013-11-05 11:11:57 +08:00 · 9000 次点击
    这是一个创建于 4065 天前的主题,其中的信息可能已经有所发展或是发生改变。
    例如

    还是应该把子类中的 validate() 作为参数,传给父类的 edit ?
    5 条回复    1970-01-01 08:00:00 +08:00
    RobinFai
        1
    RobinFai  
       2013-11-05 15:58:19 +08:00
    我是来给楼主加人气的....
    现在这样的做法不合适吧?
    在子类中修改了,但是作用范围扩大到父类中了,也会一并影响其他未定义 validate的子类。
    $scope.edit = function(item) {
    $scope.$parent.validate = $scope.validate(); // 覆盖父类的方法
    $scope.$parent.edit(item);
    }
    这一段应该可以直接删除。不需要了,效果应该是等同的。
    RobinFai
        2
    RobinFai  
       2013-11-05 16:18:24 +08:00   ❤️ 1
    @RobinFai 好吧,我错了。作用域的问题搞混了。

    validate还是接受参数吧...
    anjianshi
        3
    anjianshi  
       2013-11-05 16:37:39 +08:00   ❤️ 1
    不太建议这样,容易引入很难察觉的 bug ,但也许你可以这样:
    https://gist.github.com/anjianshi/7315688#file-gistfile1-js
    johnnyb
        4
    johnnyb  
    OP
       2013-11-05 22:48:31 +08:00
    楼上二位已感谢

    忘了说明,我 ParentCtrl.validate() 函数是空的,parentValidateFn 这一步可以省略吧?
    jinwyp
        5
    jinwyp  
       2013-11-06 17:15:48 +08:00
    看不懂具体做什么, 如果是组件尽量 封装成directive 指令, 指令有自己的作用域。 如果是全局变量 可以直接写到$rootscope 下面。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   972 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 19:13 · PVG 03:13 · LAX 11:13 · JFK 14:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.