Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.min.js"></script>
<script src="http://code.jquery.com/jquery.min.js"></script>
<link href="http://getbootstrap.com/dist/css/bootstrap.css" rel="stylesheet" type="text/css" />
<script src="http://getbootstrap.com/dist/js/bootstrap.js"></script>
<script src="https://rawgithub.com/Pasvaz/bindonce/master/bindonce.js"></script>
  
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body ng-app='app'>
  <div ng-controller='mainctrl'>
    <button class="btn btn-primary" ng-click="change_first()">
      Change first item
    </button>
    <button class="btn btn-primary" ng-click="add_item()">
      Add item
    </button>
    <p>
     Watch count : {{watchcount()}}
    </p>
    <ul>
      
      <li bindonce ng-repeat="x in arr">
        <span bo-bind=x></span>
        &nbsp;
        <a href ng-click="printme(x)">Print me</a>
      </li>
      <!-- 
      <li ng-repeat="x in arr">
        <span>{{x}}</span>
        &nbsp;
        <a href ng-click="printme(x)">Print me</a>
      </li>
      --> 
    </ul>
  </div>
</body>
</html>
 
//console.profile();
var app = angular.module('app',['pasvaz.bindonce']);
app.controller("mainctrl",function($scope) { 
  $scope.arr = [];
  for (var i=0; i< 100; i++) $scope.arr.push(i);
  $scope.change_first = function () { $scope.arr[0] = Math.random(); };
  $scope.add_item = function () { $scope.arr.unshift(Math.random()); };
  $scope.watchcount = function () { return getWatchCount($scope); };
  $scope.printme = function (x) { console.log(x); };
  
  
  $scope.$watch('$viewContentLoaded', function() {
    //console.profileEnd();
    //console.log("done");
  });
  
});
function getWatchCount (scope, scopeHash) {
    // default for scopeHash
    if (scopeHash === undefined) {
        scopeHash = {};
    }
    
    // make sure scope is defined and we haven't already processed this scope
    if (!scope || scopeHash[scope.$id] !== undefined) {
        return 0;
    }
    
    var watchCount = 0;
    
    if (scope.$$watchers) {
        watchCount = scope.$$watchers.length;
    }
    scopeHash[scope.$id] = watchCount;
    
    // get the counts of children and sibling scopes
    // we only need childHead and nextSibling (not childTail or prevSibling)
    watchCount+= getWatchCount(scope.$$childHead, scopeHash);
    watchCount+= getWatchCount(scope.$$nextSibling, scopeHash);
    return watchCount;
}
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers