背景: 我有一个像3个步骤的应用程序的AngularJs向导。向导步骤包含共享单个控制器的4个uiRouter状态。第一个状态是一个包含bootstrap药丸导航的抽象视图,其中ui-view作为其他3个嵌套状态的占位符。 3个嵌套状态具有包含唯一命名表单的单独视图。我想通过检查当前可见形式是否有效来控制父状态中的药丸导航;如果表单无效,那么我会隐藏/禁用用户点击下一个导航丸的功能。
注意:我正在使用uiRouter状态中声明的“controller as”语法。
问题: 我似乎无法从控制器中获取对当前可查看表单的引用。
这是我尝试过的: 1.在init调用中传递对表单可见表单的引用 - >我尝试写入控制台时收到未定义的错误 2.重命名表单,甚至传入范围引用,如以下链接所述: http://www.technofattie.com/2014/07/01/using-angular-forms-with-controller-as-syntax.html
演示: 这是一个显示意图的plnkr链接: http://plnkr.co/edit/YUnwoBD2dt4bzbfujJSW
控制器代码:
(function () {
'use strict';
angular
.module('recquisitionManagement')
.controller('RecquisitionEditCtrl', [RecquisitionEditCtrl]);
function RecquisitionEditCtrl() {
var vm = this;
// get ref to request form
vm.setRequestForm = function(form) {
vm.requestForm = form;
console.log(form);
// tried to call from form ng-init --> undefined response
}
// console.log($scope.vm.requestForm);
// console.log(vm.requestForm);
vm.recquisition = { id: 0, name: 'some name', date: 'date here' };
vm.requestFormIsInvalid = true; //this.requestForm.$valid;
vm.approvalFormIsInvalid = true;
if (vm.recquisition && vm.recquisition.id > 0) {
vm.title = 'Edit';
} else {
vm.title = 'Create';
}
}
}());
有关如何获取所需表单参考的任何建议?
答案 0 :(得分:1)
此处说明了多个选项:Can I access a form in the controller?
也可以重命名共享控制器名称的函数并尝试使用常见的角度练习。
答案 1 :(得分:1)
是这样的:
<form name="vm.theFormName">
然后您可以通过vm
答案 2 :(得分:0)
现在我迟到了但是你把ctrl作为一个数组传递,需要改变它:
.controller('RecquisitionEditCtrl', [RecquisitionEditCtrl]);
到此:
.controller('RecquisitionEditCtrl', RecquisitionEditCtrl);