ng-repeat中的ng模型变得未定义
ng-model in ng-repeat become undefined
使用Javascript和angularJs,我输入以下代码:
.JS
$scope.myObj = {
'sthg': '',
'a': [{
'b' : ''
}]
}
.HTML
<p ng-repeat="radio in fiche.radios">
<input type="text" ng-model="radio.code" placeholder="Numéro de cliché" ng-required="true" />
<span >
<button type="button"ng-click="removeRadioList($index);" ng-disabled="fiche.radios.length === 1">
<i>X</i>
</button>
</span>
</p>
http://plnkr.co/edit/LOgk7Nudse0srS7Bs1G6?p=preview
在我的应用程序中,$scope.myObj.a[0].b
未定义 ng-repeat(如果我删除 ng-repeat,它将被定义)。在 plunkr 中,即使在运行 ng-repeat 之后,它也被定义,但是当我在输入中输入某些内容然后删除它时,我设法有了这种行为。
我不明白发生了什么,我想了解为什么以及这是否是一个好方法?
因为您在输入标签上设置了ng-required="true"
,因此当您从输入中删除值时,角度不会将空值绑定到您的模型,当您从控制台中删除值时,您的控制台显示您radios.code
为未定义。
请参阅下面的工作演示:
(function() {
"use strict";
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope, $log) {
$scope.ficheInit = {
'user_id': '',
'radios': [{
'code': ''
}]
};
$log.log($scope.ficheInit);
$scope.fiche = angular.copy($scope.ficheInit);
$log.log($scope.fiche);
$scope.addRadioList = function() {
$scope.fiche.radios.push({
'code': ''
});
}
$scope.removeRadioList = function(i) {
$scope.fiche.radios.splice(i, 1);
}
$scope.disableAddRadio = function() {
console.log($scope.fiche.radios);
return !(angular.isDefined($scope.fiche.radios[$scope.fiche.radios.length - 1].code) || $scope.fiche.radios.length < 1);
}
});
}());
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="plunker">
<div ng-controller="MainCtrl">
<button ng-click="showForm=true;">SHOW</button>
<div ng-show="showForm">
<button ng-click="addRadioList();" ng-disabled="disableAddRadio()">Ajouter un cliché</button>
<p ng-repeat="radio in fiche.radios">
<input type="text" ng-model="radio.code" placeholder="Numéro de cliché" />
<span>
<button type="button" ng-click="removeRadioList($index);" ng-disabled="fiche.radios.length === 1">
<i>X</i>
</button>
</span>
</p>
</div>
{{fiche.radios}}
</div>
</div>
相关文章:
- 主干中的模型属性未定义
- 使用AMD时未定义淘汰组件视图模型
- 当ng repeat上的复选框具有必需的属性时,角度ng模型将变为未定义
- 续集返回未定义的模型自定义方法
- 主干目标模型 = 未定义
- 断言var集通过<输入ng模型>不是未定义的
- 当输入键由jquery触发时,我的模型是未定义的
- 角度防止将模型设置为无效的未定义
- ng模型值总是未定义的
- “渲染骨干模型视图”返回未定义的结果
- TypeError:this.clusterer在Rails模型名称更改后未定义
- 在我的情况下,ng 模型返回未定义
- Backbone - model.destroy() 函数未为模型定义
- 为什么我的模型中的默认属性返回未定义
- angularJS + 猫鼬: 类型错误: 无法读取未定义的属性“模型”
- 挖空视图模型绑定未定义错误
- 模型的存储未定义
- 单选按钮中的 ng 模型始终未定义
- 挖空嵌套模型可观察数组未定义
- 在自定义指令中未定义的 NG 模型值打印