如何在Zeppelin的javascript中将变量放入z ZeppelinContext?

时间:2016-07-12 17:11:34

标签: angularjs scala apache-zeppelin

在Scala和Python中它是:

z.put("varname", variable)

但是在javascript中我得到了(在控制台中)

Uncaught ReferenceError: z is not defined

我真正想做的是在Zeppelin中使用z.angular("varname")从Scala代码访问javascript变量,但我没有运气:(

完全需要在一个单元格中像

%angular
<script>
var myVar = "hello world";

// some magic code here!
</script>

然后在另一个单元格中

println(z.angular("myVar"))

更新:

这是我到目前为止所做的,我在黑暗中完全被刺伤,因为我更像是一个后端/数据科学类型的人。因此,为我的前端绝望而道歉。

单元格1:

z.angularBind("myVar", "myVar")
z.angularBind("msg", "msg")

注意我不知道在第二个参数中放什么。

Cell 2:

%angular

<div ng-app>
    <div id="outer" ng-controller="MsgCtrl">
        You are {{msg}}
    </div>
    <div onclick="change()">click me</div>
</div>

<script>
var myVar = "hello world";

function MsgCtrl($scope) 
{
    $scope.msg = "foo";
    // also experimented with $scope.msg = myVar;
}

function change() {
    var scope = angular.element($("#outer")).scope();
    scope.$apply(function(){
        scope.msg = 'Superhero';
    })
}
</script>

小组3:

z.angular("msg")
z.angular("myVar")

无论我做什么,我只需要获得null或var名称。

我没有看到任何按钮或任何“点击”按钮。

2 个答案:

答案 0 :(得分:5)

在Angular解释器中。我们可以

  • 在html内容中使用

    {{name}}

  • 绑定

    ng-model='name'

  • 使用或设置ng-click或其他角度指令。

    ng-click="name='Rockie'"

  

根据许多SO,修改角度控制器之外的范围变量不是一个好习惯。我也没有在Zeppelin工作。但是有一个normal js fiddle example

在Spark解释器中。我们可以

  • 绑定

    z.angularBind("name", "Knock Data")

  • 解除绑定

    z.angularUnbind("name")

  • 获取值,变量需要先绑定,否则它将变为null。

    z.angular("name")

  • 使用

    观看变量

    z.angularWatch("name", (oldValue: Object, newValue: Object) => { println(s"value changed from $oldValue to $newValue" })

除角度绑定外。 Dynamic Form是为最终用户提供互动的好方法

  • 输入

    z.input("number", 1).toString.toInt

  • 选择无默认值

    z.select("Day", Seq(("1", "Mon"), ("2", "Tue")))

  • 选择默认值

    z.select("Day", "1", Seq(("1", "Mon"), ("2", "Tue")))

  • 检查

    z.checkbox("good applications", Seq(("1", "Zeppelin"), ("2", "Highcharts"), ("3", "Spark")))

答案 1 :(得分:0)

这对我有用

%angular

<div id="map" style="height: 300px; width: 50%" ng-model="id_selected_arr"/>

%spark2

var result = z.angular("id_selected_arr")

但是我遇到了另一个问题,如何处理数组...也许有人会回答您,它也会为您提供帮助here