Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS ngForm在ngRepeat中与ngIf绑定会导致未定义的形式_Javascript_Angularjs_Angularjs Ng Form - Fatal编程技术网

Javascript AngularJS ngForm在ngRepeat中与ngIf绑定会导致未定义的形式

Javascript AngularJS ngForm在ngRepeat中与ngIf绑定会导致未定义的形式,javascript,angularjs,angularjs-ng-form,Javascript,Angularjs,Angularjs Ng Form,我将ngForm-s嵌套在ngRepeat中。表单绑定到页面控制器上的变量。然后使用ngIf根据选项卡的活动索引将表单添加到DOM中或从DOM中删除表单 奇怪的是,如果我按升序激活制表符,表单将正确绑定到控制器的表单变量,但如果我按降序激活制表符,表单将不绑定 angular.module(“myApp”,[]) .controller(“MyController”,函数($scope){ var ctrl=this; ctrl.index=0; ctrl.tabs=[1,2,3,4,5];

我将
ngForm
-s嵌套在
ngRepeat
中。表单绑定到页面控制器上的变量。然后使用
ngIf
根据选项卡的活动索引将表单添加到DOM中或从DOM中删除表单

奇怪的是,如果我按升序激活制表符,表单将正确绑定到控制器的表单变量,但如果我按降序激活制表符,表单将不绑定

angular.module(“myApp”,[])
.controller(“MyController”,函数($scope){
var ctrl=this;
ctrl.index=0;
ctrl.tabs=[1,2,3,4,5];
ctrl.text=null;
ctrl.setIndex=函数(索引){
ctrl.index=索引;
};
});

{{ctrl.form?“表单已绑定!”:“表单未绑定。”}

我不知道为什么表单与控制器解除绑定(这一定是由于
ng repeat
内部)

但是,如果您将每个表单绑定到不同的名称,即:

<ng-form name="ctrl.form{{item}}" ng-if="ctrl.index===$index">
然后一切按预期进行

angular.module(“myApp”,[])
.controller(“MyController”,函数($scope){
var ctrl=this;
ctrl.index=0;
ctrl.tabs=[1,2,3,4,5];
ctrl.text=null;
ctrl.currentForm=函数(){
返回ctrl['form'+ctrl.tabs[ctrl.index]];
};
ctrl.setIndex=函数(索引){
ctrl.index=索引;
};
});

{{ctrl.currentForm()?“表单在索引为“+ctrl.index+”!”:“表单未绑定的选项卡中绑定。”}

是的,最终我将表单绑定到ng repeat集合项上的属性。但我真的很想弄清真相。另外,如果您将ng if=“ctrl.index====$index”更改为ng if=“ctrl.index”
ctrl.currentForm = function() {
   return ctrl['form' + ctrl.tabs[ctrl.index]];
};