对角度指令进行原型设计

时间:2015-03-12 19:59:27

标签: javascript angularjs prototype

根据this问题的说明,我在配置阶段将以下代码添加到我的应用程序中:

$provide.decorator('formDirective', function($delegate) {
  var directive = $delegate[0];
  directive.controller.prototype.inputs = {};
  console.log(directive.controller);
  return $delegate;
});

我想要做的就是为现有的角形表单对象创建另一个字段和一些方法。所有这些似乎都是在formDirective控制器中定义的,但是当我将新的字段和方法原型化到该控制器中时,在我的应用程序完成引导后它们不可用。有没有我缺少的东西,这是否可能没有修改源?

提前致谢!

编辑设计模式的代码笔

http://codepen.io/anon/pen/EadRBo

1 个答案:

答案 0 :(得分:0)

感谢您的帮助。我确实得到了这个工作,如果你好奇,这就是为什么它如此重要:

$provide.decorator('formDirective', function($delegate) {
  var directive = $delegate[0];
  directive.controller.prototype.$validate = function () {
    var form = this;
    var p;
    for(p in form) {
      if(form.hasOwnProperty(p) && p.indexOf('$') < 0) {
        form[p].$setTouched();
      }
    }
  };

一种简单的方法,可以将每个元素标记为触摸,从而导致字段无效并启动错误逻辑。我希望在尝试提交表单时使用,以便用户可以查看所需的所有字段。这也有助于保持我的控制器纤薄,而无需额外服务的额外开销。