Javascript X如何在angularJS中获得价值

Javascript X如何在angularJS中获得价值,javascript,angularjs,Javascript,Angularjs,我是angular.js新手,只是在处理函数ng repeat。在其中,我使用了ng repeat=“x in name”,在names中定义了一些值,但在完整的代码中,我没有在任何地方定义x 这是我的密码: <div ng-app="myApp" ng-controller="namesCtrl"> <ul> <li ng-repeat="x in names"> {{ x.name + ', ' + x.country }} </

我是angular.js新手,只是在处理函数
ng repeat
。在其中,我使用了
ng repeat=“x in name”
,在
names
中定义了一些值,但在完整的代码中,我没有在任何地方定义x

这是我的密码:

<div ng-app="myApp" ng-controller="namesCtrl"> 

<ul>
  <li ng-repeat="x in names">
    {{ x.name + ', ' + x.country }}
  </li>
</ul>

</div>

<script>
angular.module('myApp', []).controller('namesCtrl', function($scope) {
    $scope.names = [
        {name:'Jani',country:'Norway'},
        {name:'Hege',country:'Sweden'},
        {name:'Kai',country:'Denmark'}
    ];
});
</script>

  • {{x.name+','+x.country}
角度.module('myApp',[]).controller('namesCtrl',function($scope){ $scope.names=[ {姓名:'Jani',国家:'Norway'}, {姓名:'Hege',国家:'Sweden'}, {姓名:'Kai',国家:'丹麦'} ]; });

一切正常,但我想知道
x
中的值是如何来的,或者
ng repeat
在这里到底做了什么,因为我只是调用
x
,但没有在
x
中定义任何值

Ng repeat的工作原理是观察对集合的引用,我们使用此代码指定该集合时忽略以$开头的每个属性

     for (var itemKey in collection) {
        if (hasOwnProperty.call(collection, itemKey) && itemKey.charAt(0)  !== '$') {
            collectionKeys.push(itemKey);
        }
     }
在编译过程中,会发生以下情况:

  var match = expression.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);
这将把ng repeat值中的单词分离到集合中的某个地方,并可能在最后使用一些TRACKBY。 因此,在ngRepeat指令中创建了一个变量,用于迭代使用
watchCollection
watch监视的集合

SOMETHING将在ngRepeat指令的范围内定义。 该集合实际上是来自用户$scope的引用。
您几乎可以为某些东西选择任何您想要的名称,但不能为收藏选择任何名称。

x
由angular的
ng repeat
指令定义。它迭代
names
中的所有值,并依次将每个值绑定到
x

请注意,您可以选择任何其他有效的变量名,而不是
x

x的每个值之间没有冲突的原因是每个迭代都有自己的
$scope


另请参见。

ng repeat
将在
名称
数组上迭代。 它迭代的每个对象都由您在模板中为其指定的名称表示(在您的示例中是)
x

您可以给它任何您想要的名称,它将表示所选数组中的对象。

ng repeat
指令的工作原理与javascript中in
循环的
相同

ng repeat=“x in names”
表示您正在迭代
names
数组的每个索引

$scope.names = [
        {name:'Jani',country:'Norway'},
        {name:'Hege',country:'Sweden'},
        {name:'Kai',country:'Denmark'}
    ];
两者相同:

for (var X in $scope.names) {
   console.log($scope.names[X].name + ',' + $scope.names[X].country);
}


x是在angular的
ng repeat
指令中定义的。

ng repeat
指令在javascript中用作in
循环的
ng repeat
类似于foreach循环,或者类似于@RohitJindal为in
说的a
。它在一个对象数组中逐对象循环,因此
x
获取每个对象的值。因此,我被迫在
ng repeat
中使用x,或者我可以使用任何其他变量??您可以将
x
更改为任何其他有效变量名称,
名称中的每个值都将被实例化为具有您选择的名称的变量。Angular抓取它的定义,解析2中的字符串抓取第一个并创建一个具有相同名称的变量,该变量将在$digest阶段用作光标,滚动到用户范围中定义的第二个对象上。变量不能保持可访问性,因为创建它只是为了运行repeat。这是我编的,应该是这样的。
ng-repeat="x in names"