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