Javascript 使用生成器在AngularJS中使用ng repeat进行迭代未按预期工作
AngularJS中的ng repeat似乎不适用于生成器函数。它在控制器中按预期工作,但在HTML表达式中使用时,生成器似乎已经终止。你们能给一个有棱角的傻瓜解释一下这里发生了什么魔法吗Javascript 使用生成器在AngularJS中使用ng repeat进行迭代未按预期工作,javascript,angularjs,iterator,angularjs-ng-repeat,generator,Javascript,Angularjs,Iterator,Angularjs Ng Repeat,Generator,AngularJS中的ng repeat似乎不适用于生成器函数。它在控制器中按预期工作,但在HTML表达式中使用时,生成器似乎已经终止。你们能给一个有棱角的傻瓜解释一下这里发生了什么魔法吗 function Main($scope) { $scope.items = function*() { //console.log(1); yield 1; //console.log(2); yield 2; return null; }(); //co
function Main($scope) {
$scope.items = function*() {
//console.log(1);
yield 1;
//console.log(2);
yield 2;
return null;
}();
//console.log($scope.items);
//console.log($scope.items.next().value);
//console.log($scope.items.next().value);
}
<div ng-app ng-controller="Main">
<h2>{{items.next()}}</h2>
<div ng-repeat="item in items">
Hi {{item}}
</div>
</div>
函数主($scope){
$scope.items=函数*(){
//控制台日志(1);
产量1;
//控制台日志(2);
产量2;
返回null;
}();
//log($scope.items);
//log($scope.items.next().value);
//log($scope.items.next().value);
}
{{items.next()}}
你好{{item}
为了让生成器函数返回一个可以迭代的生成器,应该使用
items()
调用它,items
只是一个函数。在这种情况下,这仍然不起作用
(生成器就是其中之一)意味着在遗留JS循环中经过特殊处理进行迭代,这涉及到监视generator.next().done
状态以结束循环。loop用于透明地处理不溶物
生成器不具有length
属性,也不一定是有限的ngRepeat
通过使用length
属性在对象键或for
循环中迭代,它不知道iterables/generators
如果生成器是有限的,则应先将其转换为数组,然后再将其馈送到
ngRepeat
,以便生成器函数返回可以迭代的生成器,应使用items()
调用它,items
只是一个函数。在这种情况下,这仍然不起作用
(生成器就是其中之一)意味着在遗留JS循环中经过特殊处理进行迭代,这涉及到监视generator.next().done
状态以结束循环。loop用于透明地处理不溶物
生成器不具有length
属性,也不一定是有限的ngRepeat
通过使用length
属性在对象键或for
循环中迭代,它不知道iterables/generators
如果生成器是有限的,则应先将其转换为阵列,然后再将其馈送到ngRepeat