angularjs范围层次结构或为什么我看不到范围变量?

时间:2014-12-23 10:12:01

标签: javascript angularjs

可能是一个棘手的问题,但是,我想了解其原因。

我有一个像这样的输入字段:

<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获得正确的值,即使它来自同一来源。

我想知道为什么?

1 个答案:

答案 0 :(得分:1)

这与范围继承(Javascript,AngularJS)

相关联

selectedEsu在链接到ng-if或其他Angular指令(此范围是Controller范围的子)的范围中定义,但父范围:控制器1,don& #39;不知道这个领域。

您可以在问题中找到更多解释,例如:What are the nuances of scope prototypal / prototypical inheritance in AngularJS?