我是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
但是得到了同样的错误。
这里有什么问题以及如何解决?
答案 0 :(得分:2)
1.使用userList:[]
作为数组,您可以使用push()
方法,请参阅此处:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push
2.当您的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]