form既有`name`属性又有`ng-controller`指令?

时间:2015-10-05 12:18:14

标签: angularjs

我理解form指令是FormController的一个实例,并在name属性的值下发布到当前作用域。 (https://docs.angularjs.org/guide/forms)。 如果form指令还包含ng-controller指令,如this example所示,会发生什么?

我试着看看如果ng-controller属性的名称不是“FormController”会发生什么:

<html>
  <head>
    <script src='angular.js'></script>
  </head>
  <script type='text/javascript'>
   Object.prototype.getName = function() { 
     var funcNameRegex = /function (.{1,})\(/;
     var results = (funcNameRegex).exec((this).constructor.toString());
     return (results && results.length > 1) ? results[1] : "";
   };
  </script>
  <body>
    <div ng-app='theApp'>
      <form name='myForm' >
      </form>
      {{myForm.getName()}}
      <form name='myForm2' ng-controller='MyFormController'>
        {{myForm2.getName()}}
      </form>
    </div>
    <script type='text/javascript'>
     angular.module('theApp', []).controller('MyFormController', ['$scope', function($scope) {}]);
    </script>
  </body>
</html>

以上代码在控制台中打印:

FormController
FormController

1 个答案:

答案 0 :(得分:0)

控制器的名称并不重要!

ngForm的意思是<form>自动成为ngForm指令的实例,您可以将任何控制器附加到该实例上。

所以最后你的myForm2会:

  • ngForm方法和道具(例如myForm2。$ valid ecc。)
  • MyFormController方法和道具(在你的情况下......没有:-p)