2017-04-13 80 views
0

我想在bootboxjs警报中访问我的knockout js viewmodel。你知道我的代码为什么不起作用吗?如何在bootbox警报中访问基因敲除变量/ observables

的jsfiddle:https://jsfiddle.net/bt2pffcd/1/

简化代码:

<div class="bootbox"> 
    <input data-bind="textinput: testText"/> Typed: 
    <label data-bind="text: testText"></label> 
</div> 
<button data-bind=" click: bootBox">Launch bootbox!</button> 

我的视图模型和applybindings:

var ViewModel = function() { 
    var self = this; 

    self.testText = ko.observable("Test"); 
    self.bootBox = function() { 
     bootbox.alert($("div.bootbox").html()); 
    } 

    } 


    ko.applyBindings(new ViewModel()); 
+0

你的jsfiddle有错误。看看控制台 –

+0

我看着它,但它不是这里的麻烦制造者我确信那个 – Developerdeveloperdeveloper

+0

我更新了你的[小提琴](https://jsfiddle.net/bt2pffcd/2/)与不同版本的淘汰赛和重新排序外部资源 - 你问你为什么bootbox警报中的文本框没有被填充? – Forty3

回答

1

我知道我的视图模型并不适用于bootbox因为bootbox DOM元素的元素被删除并在applybindings被调用后添加。我打开我的弹出窗口,并在控制台中调用applybindings,并使其工作。我希望能够在bootbox中使用我的viewmodel。

所以我想出了一个解决方案。首先绑定到特定的div。然后为bootbox内容创建一个div,然后创建bootbox弹出窗口并将第二个div的内容放入其消息中(使用jquery.html),然后将绑定应用于bootbox弹出窗口[0],胜利就是你的。小提琴将被更新。

+1

如果可能,请尝试在您的回答中包含来自您的jsFiddle的代码,因为即使jsFiddle链接也受到链接腐烂的影响。 –