可能是一个棘手的问题,但是,我想了解其原因。
我有一个像这样的输入字段:
<div>
<label class="col-xs-2" for="selectedJdeEsu">{{"JDE.jde_wizard.esu_name" | translate}}</label>
<input ng-model="selectedEsu" type="text/>
<div class = "btn wizard-next btn-primary" ng-click="addCurrent(selectedEsu)">
<i class="fa fa-plus-circle" aria-hidden="true" ></i>
add
</div>
<div ng-show="esuNameErr" style="color: red">
{{esuNameErr}}
</div>
</div>
和angularJS一样:
$scope.addCurrent = function(curr){
var found = false;
for(var i = 0 ; i < $scope.jdeEsus.length ; i++){
if($scope.jdeEsus[i].esuName === $scope.selectedEsu){
$scope.selectedEsuList.push($scope.jdeEsus[i]);
$scope.selectedEsu = '';
$scope.esuNameErr = null;
found = true;
break;
}
}
if(found == false && $scope.selectedEsu){
$scope.esuNameErr = $filter('translate')('JDE.jde_wizard.esu_name_err')
}
};
$scope.jdeEsus
是一个对象数组。
现在我的问题是,虽然循环$scope.selectedEsu
未定义,但curr
获得正确的值,即使它来自同一来源。
我想知道为什么?
答案 0 :(得分:1)
这与范围继承(Javascript,AngularJS)
相关联 selectedEsu
在链接到ng-if
或其他Angular指令(此范围是Controller范围的子)的范围中定义,但父范围:控制器1,don& #39;不知道这个领域。
您可以在问题中找到更多解释,例如:What are the nuances of scope prototypal / prototypical inheritance in AngularJS?