Я работаю над веб-приложением ASP MVC. Часть сервер-клиент выполняется с помощью SignalR. Часть сервера выполнена на C#, где реализована игра, а часть клиента - в javascript с использованием Knockout.Массив строк в нокаут
Для шахматной доски есть 64 img-теги. Исходные пути для этих изображений хранятся в списке строк в клиентской части. Используя SignalR, я могу передать этот массив клиенту.
У меня проблемы с привязкой этого массива к моим изображениям, я не могу использовать data-bind = "foreach: pathArray", потому что те теги img имеют разные классы CSS (белый/черный) и разные идентификаторы. Поэтому я пытаюсь связать источник с такими путями
data-bind="attr: { src: pathArray()[1]}"
но он не работает.
Отладка в Chrome, я видел, что массив в javascript заполнен, но я не могу привязать элемент к нему к тегам img.
Есть ли другой способ сделать это? Как и другая библиотека javascript?
EDIT: Вот как я это объявил. self.CellList = ko.observableArray ([]);
Вот как я поместил в него данные.
for (i = 0; i < cellList.length; i++) {
viewModel.CellList.push(cellList[i]);
}
, где cellList - это строковый массив, полученный от SignalR.
hub.client.beginGame = function (gameDetails, cellList)
Является ли ваш 'pathArray' наблюдаемым массивом? ('ko.observableArray') Если это не так, вам не нужно использовать круглые скобки. – user3297291
Пожалуйста, включите [mcve] в свой пост. Без способа воспроизвести вашу проблему мы можем только догадываться о решении. – Jeroen
Вы уверены, что используете его правильно? Например, так вы получите результат от регулярного массива против наблюдаемого массива в KO: https://jsfiddle.net/kasperoo/gtb2L0m5/. Но для вас было бы очень трудоемко, вручную указать каждую ячейку с индексом массив. Не было бы лучше создать мини-объект для каждой ячейки, к которому вы можете передать такие параметры, как идентификатор, имена классов и URL-адреса? – kasperoo