Knockout中的字符串数组

Array of strings in Knockout

本文关键字:数组 字符串 Knockout      更新时间:2023-09-26

我正在开发一个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上解决了很多问题。