我想创建一个类似队列的数组,我不知道如何移动到下一个元素。我没有使用for循环进行迭代,因为如果删除数组的元素就会出现问题。
我该怎么办?
编辑: 我应该放一个示例代码: 在控制器中创建数组:
listOfItems:[{name:'Jack',specialty:'engineer'},{name:"Eva",speciality:"doctor"}]
接下来将值设置为把手
counter:0,
actions:{
openModal()
{
this.set('openModal',true);
this.set('nameOfPerson',this.get('listOfItems.'+counter+'.name');
}
nextValue()
{
this.incrementProperty('counter'); //I want to implement there
//something like next Object
}
previousValue()
{
this.decrementProperty('counter'); // previous object there
}
acceptValues()
{
//don't know how to do a delete object there
}
}
答案 0 :(得分:1)
我建议您使用新属性,就像这样。
counter: 0,
currentItem: function() {
return this.get('listOfItems').objectAt(this.get('counter'));
}.property('counter', 'listOfItems.[]')
actions:{
openModal() {
this.set('openModal',true);
this.set('nameOfPerson',this.get('currentItem.name');
},
acceptValues() {
let counter = this.get('counter');
this.get('listOfItems').removeAt(counter); // Assumes an Ember.MutableArray
if(counter > 0) {
// If we are at the first item, just let the second value be selected,
// if any other value is removed, decrement the counter by one to select
// the previous item
this.decrementProperty('counter');
}
}
}
这样,您还可以根据需要直接绑定到模板中的currentItem
,这样就可以避免使用nameOfPerson
并使用currentItem.name
。
acceptValues
方法只是从数组中删除项目,并且可以减少counter
。 currentItem
属性将失效,因为它取决于listOfItems.[]
(即项目数更改时更新)。