2011-12-28 162 views
4

我認爲我們不應該在viewmodel中引用html元素。所以我認爲我不能做$('#id')。dialog()或不應該做alert('message')或window.open()。 那我應該怎麼做呢?如何使用knockout.js顯示警報/彈出窗口/窗口

+2

看看這個答案,使用自定義綁定來控制視圖模型中的jQuery UI對話框的示例。 http://stackoverflow.com/questions/8611327/integrating-jquery-ui-dialog-with-knockoutjs/8611892#8611892。將observable設置爲true打開對話框,將其設置爲false關閉它。 –

+0

這是完美的。謝謝。 –

回答

8

看看這個答案,使用自定義綁定從視圖模型控制jQuery UI對話框的示例。

integrating jquery ui dialog with knockoutjs

設置可觀察到真正打開的對話框中,將其設置爲false關閉它。

+0

好的,你會得到2 upvotes並接受:)已經upvoted原答案。 –

1

實際上,使用對話框是沒有任何努力的。只要讓Knockout進行綁定,數據就會存在於對話元素中。在我的應用程序中,如果對話框打開或沒有效果。淘汰賽仍然會更新這些值。

一個考慮因素,我做邏輯部分我的綁定。所以我會將ko.applybindings分別應用於頁面的主體和對話框中的兩個調用。

關於警報,您必須傳遞要顯示的文本。所以要在這裏使用淘汰賽,你必須讓淘汰賽更新一個隱藏的元素。然後獲取結果值以顯示在警報中。

對於window.open,不知道你關心的是什麼。據我瞭解,這是一個新的頁面。因此,該頁面的邏輯將完成填充。

+0

是的,我知道淘汰賽會在隱藏的對話框中填充值。但是如何顯示對話框? –

+0

我想我的viewmodel只包含邏輯和沒有引用的UI。這樣我就可以獨立於UI來測試它,就像我可以在用C#編寫的單元測試中測試業務邏輯類一樣。我無法測試我的課程打開窗口或顯示警報我想。 –