DukeScript:如何从JavaScript上下文访问Java模型?

时间:2015-06-04 00:03:52

标签: knockout.js dukescript

这与12相关。

我已阅读优秀文档"Using the Knockout API"。 这解释了如何使用敲除绑定设置特定小部件的上下文。

现在我希望能够从Firebug命令行访问Java模型,就像我在浏览器中使用KnockoutJS在Javascript中访问ViewModel时通常所做的那样。 Firebug不知道" $ root",基本上我根本不知道怎样,以及是否可以访问Java模型并致电@功能方法。 那将是一个很酷的REPL。

2 个答案:

答案 0 :(得分:1)

ko.dataFor and ko.contextFor,可能更容易使用 Model = ko.dataFor(document.body);

答案 1 :(得分:0)

Sucess !!!

这就是诀窍,我创建了一个自定义绑定。在自定义绑定init()方法中,传递viewModel。然后我将模型保存到JavaScript变量中。

第1步:自定义绑定定义

  @net.java.html.js.JavaScriptBody(
      args = {},  body = 
        "ko.bindingHandlers.Model = {" +
            "init: function( element, valueAccessor, allBindingsAccessor, viewModel ){" +
            "Model = viewModel;" +
            "}" +
        "};"
  )
  public static native void registerModel();

步骤2:使用此data-bind声明页面中的div:

<div data-bind="Model"></div>

步骤3:在main,onPageLoad()中注册自定义绑定:

    MyResource.registerModel();
    MyResource.loadFirebug();
    d.applyBindings();

步骤4:从Firebug控制台(Model ....)

访问模型可观察对象和方法

也许有一种更优雅的方式直接对Firebug div进行数据绑定,但我还没有管理,也许是因为在调用applyBindings()之后Firebug是异步加载的。

enter image description here