我通过Socket从Mongodb获取数据并发送给客户端, 我使用knockout绑定,但错误不能多次应用绑定。 你能帮我修理一下代码吗?
代码:
socket.on('data', function(data) {
function getdata() {
var stock = [];
for (var i = 0; i < data.length; i++) {
stock.push(data[i]);
}
return stock;
}
var results = getdata();
var ViewModel = {
stocks: ko.observableArray(results)
};
$(function() {
ko.applyBindings(ViewModel, $("#stock").get(0));
});
});
答案 0 :(得分:1)
分离创建和更新您的视图模型。
你还没有提供真正的复制品,但在你的背景下,它会沿着这些方向发展:
var ViewModel = {
stocks: ko.observableArray([])
};
$(function() {
ko.applyBindings(ViewModel, $("#stock").get(0));
});
socket.on('data', function(data) {
function getdata() {
var stock = [];
for (var i = 0; i < data.length; i++) {
stock.push(data[i]);
}
return stock;
}
var results = getdata();
ViewModel.stocks(results);
});
将stocks
作为带有1个参数的函数调用设置其值。如果要更新它,还可以将一个或多个项目推送到视图模型属性。检查the docs以获取有关所有可观察数组方法的信息。
PS。最有可能的是,你可以简化为这样的事情:
var ViewModel = {
stocks: ko.observableArray([])
};
$(function() {
ko.applyBindings(ViewModel, $("#stock").get(0));
});
socket.on('data', function(data) {
for (var i = 0; i < data.length; i++) {
ViewModel.stocks.push(data[i]);
}
}
});