如何在bootbox警报中访问knockout变量/ observables

时间:2017-04-13 12:49:08

标签: knockout.js bootbox

我想在bootboxjs警报中访问我的knockout js viewmodel。你知道为什么我的代码不起作用吗?

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>

我的viewmodel和applybindings:

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

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

  }


  ko.applyBindings(new ViewModel());

1 个答案:

答案 0 :(得分:1)

我了解到我的viewmodel未应用于bootbox元素,因为在调用applybindings之后会删除并添加bootbox dom元素。我打开我的弹出窗口并在控制台和voilla中调用applybindings它有效。我希望能够在bootbox中使用我的viewmodel。

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