2017-02-17 3 views
3

У меня есть функция, которая получает объект каждый раз, когда он вызывается, я хочу сохранить этот объект в массиве. Но когда я подталкиваю полученный объект в массиве, предыдущий объект перезаписывается. Как сохранить объекты, не перезаписывая предыдущие, каждый раз в функции am, чтобы все объекты были напечатаны в функции for().Мои объекты переписаны в массиве

drawtimeline(i_items, nom_cal, _hitoService, idcalbuscador) { 
    var container = document.getElementById('timeLine'); 
    var result: any[] = []; 
     result.push({ "_id": this.idcalbuscador, "title": nom_cal }); 
    for (let i of result) { 
    console.log(i); 
     alert(i); 
    } 
} 

ответ

4

Ваш result переменная является локальной для функции drawtimeline. Когда эта функция завершит выполнение, будет сброшена переменная result. Когда эта функция вызывается снова, выделяется новый массив result, что делает его похожим на очистку старого объекта, хранящегося в массиве. Каждый раз, когда вы запускаете функцию, вы печатаете отдельный массив, содержащий только один объект, который вы только что нажали.

Решение состоит в том, чтобы вытащить переменную result из функции и во внешнюю область. Детали будут зависеть от того, является ли эта функция частью модуля, класса или голого. Как правило, она будет выглядеть следующим образом:

var result: any[] = []; 
drawtimeline(i_items, nom_cal, _hitoService, idcalbuscador) { 
    var container = document.getElementById('timeLine'); 

    result.push({ "_id": this.idcalbuscador, "title": nom_cal }); 
    for (let i of result) { 
     console.log(i); 
     alert(i); 
    } 
} 

Если вы находитесь в классе, вам нужно будет использовать this.result

Смежные вопросы