2016-05-26 4 views
0

現在、私はsails.jsで角度2で作業していますが、私は非同期イベントに問題があります。 私はpromiseを使用しようとしましたが、ポスト配列が更新されたときにビューが変更されず、誰でもアイデアがありますか?角度2 io.socket.on

ありがとうございます。

@Injectable() 
export class newsService { 
    posts = []; 
    constructor() { 
     console.log('newsService constructor'); 
     io.socket.on('post',event => { 
      let data = event.data; 
      switch(event.verb) { 
       case 'created': 
        let post = new Post(); 
        post.id = data.id; 
        post.content = data.content; 
        post.author = data.author.fullname; 
        post.date = new Date(data.date); 
        this.posts.push(post); 
        break; 
      } 
     }); 
    } 
} 

答えて

1

私は、ソケットがアンギュラレスゾーン外で動作するため、角度がコールバックを認識せず、変更検出を実行しないと思います。 Angularsゾーン内のモデルを明示的に更新するコードを実行します。

@Injectable() 
export class newsService { 
    posts = []; 
    constructor(private zone:NgZone) { 
     console.log('newsService constructor'); 
     io.socket.on('post',event => { 
      this.zone.run(() => { 
      let data = event.data; 
      switch(event.verb) { 
       case 'created': 
        let post = new Post(); 
        post.id = data.id; 
        post.content = data.content; 
        post.author = data.author.fullname; 
        post.date = new Date(data.date); 
        this.posts.push(post); 
        break; 
      } 
      }); 
     }); 
    } 
} 
+0

ありがとうございました !!!! :D – Unchained

+0

嬉しいことに:) –