Javascript X如何在angularJS中获得价值
我是angular.js新手,只是在处理函数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 }} </
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"