<!DOCTYPE html>
<html>

  <head>
    <title>AngularJS Tutorials : Defining a Method on the Scope : http://egghead.io/video/Powr9vzqMac</title>
    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/foundation/3.2.5/stylesheets/foundation.min.css" />
    <script data-require="angular.js@1.0.7" data-semver="1.0.7" src="http://code.angularjs.org/1.0.7/angular.min.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
    <!--
    
    Define a method on your controller. 
    By passing in data.message you avoid creating a dependency on your $scope in the method
    e.g. this is not ideal: return $scope.data.message.split("").reverse().join("");
    
    For the functionality in this example a Filter would be a better solution, see:
    http://plnkr.co/edit/L5qhxf
    
    -->
  </head>

  <body>
    <div ng-app="myApp">
    
    
      <div ng-controller="FirstCtrl">
        <input type="text" ng-model="data.message">
        <h1>{{data.message}}</h1>
      </div>
      
      
      <div ng-controller="SecondCtrl">
        <input type="text" ng-model="data.message">
        <h1>{{reversedMessage(data.message)}}</h1>
      </div>
      
      
    </div>
  </body>

</html>
var myApp = angular.module('myApp', []);
myApp.factory('Data', function(){
  return { message: "I'm data from a service" };
})

function FirstCtrl($scope, Data) {
  $scope.data = Data;
}

function SecondCtrl($scope, Data){
  $scope.data = Data;
  
  $scope.reversedMessage = function(message){
    return message.split("").reverse().join("");
  }
}
/* Styles go here */