2017-04-13 50 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鏈接也受到鏈接腐爛的影響。 –