<!DOCTYPE html>
<html>

<head>
  <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.11/angular.min.js"></script>
  <script type="text/javascript" src="script.js"></script>
  <script type="text/javascript" src="protractor.js"></script>
</head>

<body ng-app="">
  <div ng-controller="Cntl2" class="expressions">
    Expression: Change numbers and then click to evaluate.
    <input type='text' ng-model="expr" size="80" />
    <button ng-click="addExp(expr)">Evaluate</button>
    <ul>
      <li ng-repeat="expr in exprs track by $index">
        [ <a href="" ng-click="removeExp($index)">X</a> ]
        <tt>{{expr}}</tt> => <span ng-bind="$parent.$eval(expr)"></span>
      </li>
    </ul>
  </div>

  Event ($event expression)
  <div ng-controller="EventController">
    <button ng-click="clickMe($event)">Event</button>
    <p><code>$event (nothing will be displayed here)</code>: <pre> {{$event | json}}</pre>
      <p><code>clickEvent (whatever info you can get when you click)</code>: <pre>{{clickEvent | json}}</pre>

  </div>

  <div ng-controller="OneTimeBindingController">
    <button ng-click="clickMe($event)">Click Me</button>
    <p id="one-time-binding-example">One time binding: {{::name}}</p>
    <!-- An expression that starts with :: is considered a one-time expression. -->
    <p id="normal-binding-example">Normal binding: {{name}}</p>
  </div>

</body>

</html>
// Code goes here
function Cntl2($scope) {
  var exprs = $scope.exprs = [];
  $scope.expr = '3*10|currency';
  $scope.addExp = function(expr) {
    exprs.push(expr);
  };

  $scope.removeExp = function(index) {
    exprs.splice(index, 1);
  };
}

var EventController = function($scope) {
    /*
     * expose the event object to the scope
     */
    $scope.clickMe = function(clickEvent) {
      $scope.clickEvent = simpleKeys(clickEvent);
      console.log(clickEvent);
    };

    /*
     * return a copy of an object with only non-object keys
     * we need this to avoid circular references
     */
    function simpleKeys (original) {
      return Object.keys(original).reduce(function (obj, key) {
        obj[key] = typeof original[key] === 'object' ? '{ ... }' : original[key];
        return obj;
      }, {});
    }
  };
  
var OneTimeBindingController = function($scope) {
    var counter = 0;
    var names = ['Sandeep', 'Brian', 'Sunil', 'Rahul'];
    /*
     * expose the event object to the scope
     */
    $scope.clickMe = function(clickEvent) {
      $scope.name = names[counter % names.length];
      counter++;
    };
  };
/* Styles go here */

AngularJS Expressions samples
sKolte
  it('should allow user expression testing', function() {
    element(by.css('.expressions button')).click();
    var lis = element(by.css('.expressions ul')).element.all(by.repeater('expr in exprs'));
    expect(lis.count()).toBe(1);
    expect(lis.get(0).getText()).toEqual('[ X ] 3*10|currency => $30.00');
  });