这是我第一次使用生成器函数,所以很抱歉,如果我不正确地使用它。.
好吧,基本上我有一个按钮,可以对用户列表进行排序,有3个排序选项-按谁可用,谁不可用然后按名称排序。
现在,我想循环浏览这些选项,因此每次您单击按钮时,它只会在下一个yield
之前对它进行排序,依此类推。
所以我创建了一个像这样的函数。
*order() {
yield this.crewMembers = _.orderBy(this.crewMembers, ['available'], ['asc']);
yield this.crewMembers = _.orderBy(this.crewMembers, ['available'], ['desc']);
yield this.crewMembers = _.orderBy(this.crewMembers, ['username'], ['desc']);
}
然后在我的html中
<button (click)="order().next()">ORDER</button>
现在它第一次生效,它将顺序更改为available
,asc
,但是如果我再次单击该按钮,它将不起作用;
我希望得到的结果是能够无限次按下按钮并循环选择我的订单选项。我这样做对吗?
任何帮助将不胜感激!
谢谢
答案 0 :(得分:2)
每次调用order()
时,都是从头开始生成器的新实例。您需要调用一次order()
,将其保存在一个变量中,然后每次单击该按钮时就对该变量调用.next()
。