【发布时间】:2015-02-11 17:37:23
【问题描述】:
背景: 我有一个 AngularJs 向导,例如 3 个步骤的应用程序。向导步骤包含 4 个共享单个控制器的 uiRouter 状态。第一个状态是包含引导药丸导航的抽象视图,其中 ui 视图作为其他 3 个嵌套状态的占位符。 3 个嵌套状态有一个单独的视图,其中包含唯一命名的表单。我想通过检查当前可见表单是否有效来控制父状态下的药丸导航;如果表单无效,那么我将隐藏/禁用用户单击下一个导航药丸的能力。
注意:我使用的是在 uiRouter 状态中声明的“controller as”语法。
问题: 我似乎无法从控制器中获取对当前可查看表单的引用。
这是我尝试过的: 1. 在初始化调用中传递对表单可见表单的引用 --> 当我尝试写入控制台时出现未定义错误 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';
}
}
}());
关于如何获取所需的表单参考有什么建议吗?
【问题讨论】: