ブラウザでライフゲームつくった - blog.jgs.me

(ここにgifがあった)
を読みまして、特に終盤の最近みつかったパタンに関する動画に盛り上がったのでライフゲームをつくりました。
東京へ向かう新幹線の中で、「そうだ!backbone.jsつかってみたかったしMVCやってみるか〜〜〜?」って意気込んで作ってたらいまいちうまくいかなくて困ったまま東京へ着きました。代々木で父たち(じゅんなすさん)と米を食べているときに、父29に「Viewmodelひとつでつくれるね!」と指摘されたのでウオオ!って帰りの新幹線でMBPを開いてknockout.jsをダウンロードした瞬間に寝て起きたら京都だったので(酔っ払い)、今朝モリモリコードを書いて完成しました。
アルゴリズム自体は単純なので、すぐ実装できるのですがknockout.js慣れてなさすぎてknockoutされてきた過去を持つので(0勝3敗KO負け)大変でしたが、分かると楽しいです。

困ったところその1
Viewmodelをfunctionで宣言したときにcoffeescriptで書いてるとthisをreturnしてやらないとbindしてくれない
最後にthisを書いておかないと最後のメソッドがreturnされてしまってbindしてくれないのだー!(これに気付かなくてしばらくハマった)

困ったところその2
knockout.jsで多次元配列をbindするときのいろいろ
多次元配列を knockout で扱うときは observableArray() に observableArray() を push して、その中の bind したい値にも observable() を使うとうまく bind できるようになりました。それから、その多次元配列の値を取得するときは ary()0()1() みたいな感じでアクセスしないといけないのが若干気持ち悪いです。あと、 jade(html) では template を書いておくのですが
みたいな感じで書くとデータが bind されるようになりました。
いくつか 追加したい機能 があるので、暇があるときにコードを書いていきたいです。
もしよかったらPRなどよろしくおねがいします!

January 10th, 2013 6:37pm