Knockout

时间:2016-05-09 10:36:51

标签: javascript c# asp.net knockout.js

我正在开发一个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)

1 个答案:

答案 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解决了很多问题。