AngularJS自定义指令和ctrl,如果出现以下情况,则抛出错误:ctrl的方法与ctrl的名称相同

AngularJS custom directive and ctrl, throws error if: the method of ctrl is the same as name of ctrl

本文关键字:ctrl 出错 错误 方法 情况 如果 指令 自定义 AngularJS      更新时间:2023-09-26

我还是AngularJS的新手,所以这是我必须解决的一个问题:

我制作了一个自定义提交指令,该指令仅在表单有效时才提交表单。它可以像这样使用:

<form novalidate mm-submit="mySubmitMethod()">

一切正常,直到我尝试使用register方法的RegisterCtrl;提交时,指令抛出以下错误:

TypeError: object is not a function at ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.3/angular.js:9068:15

如果该方法被命名为register2或其他名称,则一切正常。

这是一个带有演示和源代码的工作触发器。

因为窗体名称是register所以将 FormController 绑定到父作用域上的 register 属性。如果你在你的指令中console.log(scope.register),你会在那里看到FormController。如果未创建任何隔离的作用域,则需要将提交函数定义为其他函数,或更改表单名称以防止此冲突。