私はASP MVCチェスのWebアプリケーションで作業しています。サーバ - クライアント部分はSignalRで作られています。サーバー部分はC#で作られ、ゲームが実装され、クライアント部分はKnockoutを使ってjavascriptになっています。ノックアウトの文字列の配列
チェスボードには64個のimgタグがあります。これらのイメージのソースパスは、クライアント部分の文字列リストに格納されます。 SignalRを使用して、その配列をクライアントに渡すことができます。
これらのimgタグには異なるCSSクラス(白黒)と異なるIDがあるため、データバインド= "foreach:pathArray"は使用できません。したがって、このようなパスにソースをバインドしようとしています。
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)
'pathArray'は観測可能な配列ですか? ( 'ko.observableArray')そうでなければ、カッコを使う必要はありません。 – user3297291
投稿に[mcve]を含めてください。あなたの問題を再現する方法がなければ、私たちは解決策を推測することしかできません。 – Jeroen
正しくバインドしていますか?たとえば、これはどのようにあなたはKOの定期的な配列対観測可能な配列から結果を得るだろうか:https://jsfiddle.net/kasperoo/gtb2L0m5/しかし、それはあなたの手で、アレイ。 ID、クラス名、URLなどのパラメータを渡すことができる各セル用のミニオブジェクトを作成する方が良いでしょうか? – kasperoo