我正在开发一个ASP MVC国际象棋网络应用程序。服务器 - 客户端部分由SignalR构成。服务器部分是用C#编写的,其中游戏是实现的,客户端部分是使用Knockout在javascript中。
国际象棋棋盘有64个img标签。这些图像的源路径存储在客户端部分的字符串列表中。使用SignalR我可以将该数组传递给客户端。
我在将数组绑定到我的图像时遇到问题,我不能使用data-bind =“foreach:pathArray”,因为那些img标签具有不同的css类(白色/黑色)和不同的ID。因此,我试图将源绑定到像这样的路径
data-bind="attr: { src: pathArray()[1]}"
但它不起作用。
在Chrome中调试,我看到javascript中的数组已填充但我无法将其中的项目绑定到img标记。
还有其他办法吗?像另一个JavaScript库?
编辑: 这就是我宣布它的方式。 self.CellList = ko.observableArray([]);
这是我将数据放入其中的方式。
for (i = 0; i < cellList.length; i++) {
viewModel.CellList.push(cellList[i]);
}
其中cellList是从SignalR收到的字符串数组。
hub.client.beginGame = function (gameDetails, cellList)
答案 0 :(得分:0)
没有更多的代码,很难说出问题是什么,但不是直接插入字符串,而是为“cellList”中的每个项目创建一个vm
var cell = function(data,index){
var self = this;
self.class = index%2==0?'black':'white';
self.id = 'prefix'+data.id
}
在视图中使用逻辑只不过是麻烦。将其拉出到vm解决了很多问题。