gpt4 book ai didi

angularjs - 当表单在指令中时如何访问 FormController?

转载 作者:行者123 更新时间:2023-12-04 23:41:57 30 4
gpt4 key购买 nike

以下是我的指令:

restrict: 'E',
scope: {

},
templateUrl: 'directives/my.directive.html',
link: function(scope) {
// Want to be able to access "myForm" here (eg: to setPristine(), etc)
scope.bla = {}
}

以下是模板中的内容:
<form name="myForm" novalidate>
<input name="inputOne" type="text" ng-model="bla.name" required/>
</form>

我试过了:
console.log(scope.myForm) // shows undefined

和:
<form name="myForm" novalidate>
<div ng-init="bla.newForm = myForm"></div>

<input name="inputOne" type="text" ng-model="bla.name" required/>
</form>

console.log(scope.bla.newForm) // Undefined

请不要告诉我:
require: '^form' 

我收到错误:无法获取 FormController。这是正确的,因为表单是指令的一部分,而不是在父模板/范围中

真的很感谢这里的一些帮助。

最佳答案

从表单获取表单 Controller 的一种非常简单的方法,无论范围如何(或者如果您需要从另一个 Controller 、服务或指令访问它!),是使用 angular.element。

angular.element("[name='myForm']").controller("form");

这里需要注意的是,表单必须已加载/编译到 DOM 中,但由于您在链接函数中执行此操作,因此它应该已经呈现。如果未定义,请尝试将其包装在 $timeout 中,以便让摘要有机会运行。
 $timeout(function() { angular.element("[name='myForm']").controller("form"); });

这不是非常“最佳实践”,但如果您已经用尽了其他选项,那就太好了。

关于angularjs - 当表单在指令中时如何访问 FormController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34716992/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com