2012-05-06 6 views
4

私は2つのモデルを持っています:ServiceViewModelとReservationsViewModel;どちらもlearn.knockoutjs.comにあるチュートリアルに基づいています。ページ上で2つのモデルを使用するとKnockout.jsがバインドできない

私の問題は、私のWebページがロードされるときにServiceViewModelだけがバインドされることです。 ReservationViewModelにバインドされているコントロールは何も表示しません。私はknockout.jsを初めて使っていますが、解決策は探していますが、無駄です。

ServiceViewModelへのバインディングを削除すると、ReservationsViewModelにバインドするコントロールが適切にバインドされます(つまり、データが表示される)ので、ここで何が起こっているのかわかりません。私はknockout.jsがページ上に1つのviewmodelを許さないように思えますが、それは愚かで、私が推測するような大きな制限は問題ではありません!

ここに私のフィドルへのリンクがあります:http://jsfiddle.net/zsg6b/ あなたはJSFiddleでもバインディングが動作しないことがわかります。

私はVisual StudioのInternet ExplorerとGoogle Chromeでプロジェクトを実行すると、私は次のように同じエラーを取得:

runtime error: Unable to parse bindings. Message: ReferenceError: 'seats' is undefined; Bindings value: foreach: seats

は私が間違って何をしましたか?私のjsfiddleをチェックアウトしてください。

PS:これは私の最初のstackoverflow投稿ですので、優しくしてください! :)

ありがとうございます。

答えて

8

ページに複数のビューモデルがある場合、各ビューモデルが適用されるページのどの部分をapplyBindings呼び出しで指定する必要があります。私はapplyBindingsでそれらを指定し、その後、別の容器にサービスとの予約セクションをラップすることにより、あなたのフィドルを修正しました

は呼び出し:私のフィドルを固定するhttp://jsfiddle.net/zsg6b/1/

+0

感謝を。私はあなたが複数のモデルを持っている場合、htmlをコンテナ化し、コンテナのDOM IDをapplyBindingsメソッドに渡す必要があることに気づいていませんでした。素晴らしい洞察力!残念なことに、ソリューションを私のVisual Studio ASP.Net MVC4プロジェクトに貼り付けると、うまくいきませんでした。私はあなたが私のプロジェクトを見て、私がどこに行くのかを示唆することができればと思っていました。ここのrapidshareで私のプロジェクトをダウンロードしてください:https://rapidshare.com/files/2327517184/MvcHtml5Test.zip – elcid

+0

こんにちはトゥアン、私が作った最後のコメントを無視してください。私は今問題を解決しました。あなたのコードは驚異的に機能しましたが、JSFiddleからコピーしてファイルに貼り付けると、コピーされた不可視の文字であっても無効なものがいくつかありました。物語の道徳はjsFiddleからコードをコピー/ペーストすることは決してありません!! [これは私が解決策を見つけたところへのリンクです](これを参照してください)他の誰のためにも(http://stackoverflow.com/questions/4404526/unexpected-token-illegal-in-webkit)!私の元の質問については、多くのおかげでトゥアン私は解決策としてあなたの答えをマークしています。 – elcid

+0

お寄せいただきありがとうございます。乾杯。 – Tuan

関連する問題