2017-03-13 1 views
1
내가 여기 vue.js하고 새로 온

내 문제입니다 :vue.js에 나열하는 항목을 추가하는 방법

data: { 
     ws: null, 
     newMsg: '', 
     username: null,  
     usersList: '' 
    }, 
     created: function() { 
     var self = this; 
     this.ws = new WebSocket('ws://' + window.location.host + '/room'); 
     this.ws.addEventListener('message', function(e) { 
      var msg = JSON.parse(e.data); 
       if (msg.Message == "joined") { 
       self.usersList.push(msg.Name); // <--Problem here 
       } 


     }); 
    }, 

하지만 브라우저 콘솔에서이 오류를 얻을 :

Uncaught TypeError: self.usersList.push is not a function 

나는 또한 msg.Name 대신 고정 된 문자열을 tryied했지만 동일한 오류가 발생합니다.

무엇이 잘못 되었습니까? 해결 방법은 무엇입니까?

+1

문자열에'usersList : '''를 선언하고 데이터를'usersList : []'로 변경하십시오. –

+0

@MatJ. 그냥 알아 냈어! 대답 해주시면 받아 들일 것입니다. – Karlom

답변

2

1. 한 userList:[] 배열로, 당신은 push() 방법을 사용할 수있는 여기를 참조 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push

당신의 e.data이 같은 배열입니다 할수 있도록 팝업 : [1,2,3,4], 당신은 두 개의 배열을 결합 concat를 사용할 수 있습니다.

var arr1 = [1,2,3,4]; 
var arr2 = [5,6,7]; 
var arr = arr1.concat(arr2); // [1, 2, 3, 4, 5, 6, 7] 

또는 Array.prototype.push.apply(arr1, arr2);은 두 번째 배열의 모든 요소를 ​​푸시합니다.

var arr1 = [1,2,3,4]; 
var arr2 = [5,6,7]; 
Array.prototype.push.apply(arr1, arr2); 
console.log(arr1);//[1, 2, 3, 4, 5, 6, 7] 
관련 문제