--- layout: page title: "Back-end Angular API in Apache Zeppelin" description: "Apache Zeppelin provides a gateway between your interpreter and your compiled AngularJS view templates. You can not only update scope variables from your interpreter but also watch them in the interpreter, which is JVM process." group: display --- {% include JB/setup %} # Back-end Angular API in Apache Zeppelin
## Overview Angular display system treats output as a view template for [AngularJS](https://angularjs.org/). It compiles templates and displays them inside of Apache Zeppelin. Zeppelin provides a gateway between your interpreter and your compiled **AngularJS view** templates. Therefore, you can not only update scope variables from your interpreter but also watch them in the interpreter, which is JVM process. ## Basic Usage ### Print AngularJS view To use angular display system, you should start with `%angular`.
Since `name` is not defined, `Hello {{name}}` will display `Hello`.
> **Please Note:** Display system is backend independent.
`z.angularBind("run", 0)` will initialize `run` to zero. And then, it will be also applied to `run` in `z.angularWatch()`.
When the button is clicked, you'll see both `run` and `numWatched` are incremented by 1.
## Let's make it Simpler and more Intuitive
In this section, we will introduce a simpler and more intuitive way of using **Angular Display System** in Zeppelin.
Here are some usages.
### Import
```scala
// In notebook scope
import org.apache.zeppelin.display.angular.notebookscope._
import AngularElem._
// In paragraph scope
import org.apache.zeppelin.display.angular.paragraphscope._
import AngularElem._
```
### Display Element
```scala
// automatically convert to string and print with %angular display system directive in front.
### Example: String Converter
Using below example, you can convert the lowercase string to uppercase.
{% raw %}
```scala
// clear previously created angular object.
AngularElem.disassociate
val button =