获取 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 框架设计目标的一部分。
有一个简单的表格
<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 inng-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 框架设计目标的一部分。