2016-04-30 70 views
3

我的手机应用程序中有以下的Typescript类,它的Click功能是点击按钮触发的。感兴趣的是todoItemTable.read,它从我的云端后端获取ToDoItems数组。当前的代码工作并吐出了8个todo项目的文本,但我想将文本存储在一个数组中,所以如果您看到注释掉的内容,我将其推送到todos,那就是我认为我会如何处理这个问题。然而,那行代码让循环运行,所以我得到第一个ToDo项目记录两次,然后没有别的。应用程序不会挂起,并且没有错误。JavaScript数组推断循环?

export class HelloWorldModel extends Observable { 
    public todos: any[]; 

    constructor() { 
    super(); 
    } 

    Click() { 
    var client = new MobileServiceClient("https://example.azurewebsites.net"); 
    console.log("CLIENT"); 
    var todoItemTable = client.getTable("TodoItem"); 
    console.log("Table"); 
    this.todos = []; 
    todoItemTable.read<TodoItem>().then(function (results) { 
     // results is array of TodoItem-s 
     console.log(results.length); 
     console.log(results[0].text); 
     for (let i of results) { 
     console.log(i.text); 
     //this.todos.push(i.text); 
     } 
    }); 
    } 

} 

怎么回事?

回答

0

我有同样的问题,每当我试图在任何地方我loop它会运行通过使用array.push()一次然后停止。我通过将该阵列实例化为一个空数组来解决此问题(array: string[ ] = [ ])我的loop的外部。然后实例化新的字符串以推送到循环内部的数组。 希望这可以帮助任何人在那里=)