获取 Angular (this.form.name) 内的表单名称

Getting form's name within Angular (this.form.name)

有一个简单的表格

<ng-form name="foo">
    <button />
</ng-form>

单击按钮应提醒表单名称 foo.

是否有 angular-way 可以做到这一点?

编辑: 告诉我 parent 的名字是一个可能的解决方案。

您应该可以在 $scope 上访问它:

$scope.foo

ng-click 期望当前范围内的 Angular expression 或函数。看起来 Angular 不允许您使用全局范围方法。

Angular uses $parse service to evaluate the expression in ng-click="expression".

$parse 使用字符串解析来解释 expression 并将您对变量、函数和对象的访问限制为仅属于 $scope 对象的属性或属性任何 $parent 个范围对象。

只需在您的 Template & Controller 中试试这个!

Template

ng-click="alert(foo.$name)"  <!-- foo ~ MY_FORM_NAME in your case -->

Controller

$scope.alert = function(formName){
  alert(formName);
}

这将正确执行 JavaScript alert()

参考AngularJS/ngClick了解更多信息。

希望对您有所帮助!

假设按钮的形式是直接父形式,您可以利用 ng-click 上的 $event 属性 遍历 DOM 并找到父形式元素。这使用 angular.element(someElement).parent().

$scope.showFormName = function($event) {
  $scope.formName = angular.element($event.target).parent()[0].name;
};
<button ng-click="showFormName($event)">Show Form Name</button>

http://plnkr.co/edit/yDPc76rqUHpOcL2aGeIU?p=preview

如果按钮不是表单元素的直接后代,或者不在表单本身内,则可能需要更高级的 DOM 遍历,最有可能通过 JQuery,因为这不是 Angular 框架设计目标的一部分。