如何使用knockout.js显示警报/弹出窗口/窗口

如何使用knockout.js显示警报/弹出窗口/窗口,knockout.js,Knockout.js,我认为我们不应该在viewmodel中引用html元素。所以我想我不能做$('#id').dialog(),也不应该做alert('message')或window.open()。 那我该怎么做呢?实际上,使用对话框一点也不费力。只要让Knockout执行它的绑定,数据就会出现在对话框元素中。在我的应用程序中,对话框是否打开没有任何影响。敲除仍将更新值 不过需要考虑的一点是,我在逻辑部分进行绑定。因此,我将在两个调用中分别将ko.applybindings应用于页面的主体和对话框 关于警报,您必

我认为我们不应该在viewmodel中引用html元素。所以我想我不能做$('#id').dialog(),也不应该做alert('message')或window.open()。
那我该怎么做呢?

实际上,使用对话框一点也不费力。只要让Knockout执行它的绑定,数据就会出现在对话框元素中。在我的应用程序中,对话框是否打开没有任何影响。敲除仍将更新值

不过需要考虑的一点是,我在逻辑部分进行绑定。因此,我将在两个调用中分别将ko.applybindings应用于页面的主体和对话框

关于警报,您必须输入要显示的文本。所以要在这里使用knockout,您必须让knockout更新一个隐藏元素。然后获取结果值以显示在警报中


对于window.open,不确定您关心的是什么。据我所知,这与翻开新的一页是一样的。因此,页面的逻辑将进行填充

看看这个答案,了解使用自定义绑定从视图模型控制jQuery UI对话框的示例


将observable设置为true将打开对话框,将其设置为false将关闭对话框。

查看此答案,了解使用自定义绑定从视图模型控制jQuery UI对话框的示例。将observable设置为true将打开对话框,将其设置为false将关闭对话框。这非常完美。谢谢。是的,我知道敲除将填充隐藏对话框中的值。但如何显示该对话框呢?我希望我的viewmodel只包含逻辑,不包含对UI的引用。因此,我可以独立于UI进行测试,就像我可以在用C#编写的单元测试中测试业务逻辑类一样。我无法测试我的类是否打开了窗口或显示了我认为是的警报。好吧,你们得到2张赞成票并接受:)已经对原始答案投了赞成票。