angularjs组件在模板内获取表单
因此,我有一个包含表单的模板的组件 mycomponent.html:angularjs组件在模板内获取表单,angularjs,angularjs-components,Angularjs,Angularjs Components,因此,我有一个包含表单的模板的组件 mycomponent.html: <div> <form name="myForm"> <!-- more html code --> </form> </div> 表单的name属性是angular用来决定绑定到什么的属性。因此,如果使用controllerAs语法,则必须在表单名称中使用该语法: <body ng-controller="MainCt
<div>
<form name="myForm">
<!-- more html code -->
</form>
</div>
表单的
name
属性是angular用来决定绑定到什么的属性。因此,如果使用controllerAs语法,则必须在表单名称中使用该语法:
<body ng-controller="MainCtrl as vm">
<form name='vm.myForm'>
</form>
</body>
这是一个可行的方法。使用名称语法,但也使用组件后链接生命周期挂钩,一旦连接了模板和控制器,就会调用该函数。请参见通常以角度绑定表单中的元素,而不是直接处理表单。您需要访问表单元素本身有什么原因吗?我想检查$pristine,$valid e.t.c。谢谢,这只做了一点修改,因为我使用的是组件,据我所知,无法访问“mainctrl as vm”。作为名称,然后在angular组件中可访问。是否使用angular 1.5?它会自动添加
$ctrl
作为controllerAs
的默认值,即使是组件也是如此。是的,角度1.5,我明白了。很高兴了解未来!是的,这适用于组件,但正如royka所指出的,您可以在postLink中访问它hook@Dave组件有一个.$onInit函数,用于在组件初始化并准备好使用后运行,因此使用此示例vm.$onInit=>(){console.log(vm.myForm);}
<body ng-controller="MainCtrl as vm">
<form name='vm.myForm'>
</form>
</body>
app.controller('MainCtrl', function($scope, $timeout) {
var vm = this;
console.log(vm.myForm); // undefined
$timeout(function() {
console.log(vm.myForm); // FormController object
}, 100);
});