Chapter 10: Safe deep property reference using $parse

HTML

<script src="https://code.angularjs.org/1.3.2/angular.min.js"></script>
<div ng-app="myApp">
    <div ng-controller="Ctrl"></div>
</div>

JavaScript

angular.module('myApp', [])
.controller('Ctrl', function($log, $scope, $parse) {
    $scope.user = {
        address: {
            number: 1060,
            street: 'W Addison St',
            city: 'Chicago',
            state: 'IL',
            zipCode: 60613,
            fullStr: function() {
                return this.number + ' ' +
                    this.street + ', ' +
                    this.city + ', ' +
                    this.state + ' ' +
                    this.zipCode;
            }
        }
    };


    //from http data
    var n = {name:'dd',age:14 , aName:{i:23,o:'hello'}};
    var chartOptionTemplate= '{"name":name, "age":age , "data":[1,2,3,4,5,6] , "obj": {"a": aName , "f": [98,76]} }';
    var chartOption = $parse(chartOptionTemplate)(n) ;
    
  
    $log.log(   chartOption   );
    
    $scope.$watch('user', function(newUserVal) {
        $log.log(   $parse('"City: " + address.city')(newUserVal)  );
    });
    
    $scope.$watch('user', function(newUserVal) {
        $log.log($parse('"Address: " + address.fullStr()')(newUserVal));
    });
});