diff options
Diffstat (limited to 'example/temp.html')
| -rw-r--r-- | example/temp.html | 86 | 
1 files changed, 78 insertions, 8 deletions
| diff --git a/example/temp.html b/example/temp.html index f21d3f5c..b238c185 100644 --- a/example/temp.html +++ b/example/temp.html @@ -1,15 +1,85 @@  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> -<html> +<html xmlns:ng="http://angularjs.org">    <head> -    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>      <script type="text/javascript"           src="../src/angular-bootstrap.js#autobind"></script>    </head>    <body ng:init="$window.$root = this"> -    <div ng:click="$window.alert('outter')"> -      outter -      <div ng:click="$window.alert('inner')">inner</div> -      <a href="#ERROR" ng:click="$window.alert('link')">link</a> -    </div> + +<script> +function TicTacToeCntl(){ +  this.cellStyle= { +    'height': '20px', +    'width': '20px', +    'border': '1px solid black', +    'text-align': 'center', +    'vertical-align': 'middle', +    'cursor': 'pointer' +  }; +  this.reset(); +  this.$watch('$location.hashPath', this.setMemento); +  this.$onEval(function(){ +    this.$location.hashPath = this.getMemento(); +  }); +} +TicTacToeCntl.prototype = { +  dropPiece: function(row, col) { +    if (!this.winner && !this.board[row][col]) { +      this.board[row][col] = this.nextMove; +      this.nextMove = this.nextMove == 'X' ? 'O' : 'X'; +      this.grade(); +    } +  }, +  reset: function(){ +    this.board = [ +      ['', '', ''], +      ['', '', ''], +      ['', '', ''] +    ]; +    this.nextMove = 'X'; +    this.winner = ''; +  }, +  grade: function(){ +   var b = this.board; +   this.winner = +    row(0) || row(1) || row(2) || +    col(0) || col(1) || col(2) || +    diagonal(-1) || diagonal(1); +   function row(r) { return same(b[r][0], b[r][1], b[r][2]);} +   function col(c) { return same(b[0][c], b[1][c], b[2][c]);} +   function diagonal(i) { return same(b[0][1-i], b[1][1], b[2][1+i]);} +   function same(a, b, c) { return (a==b && b==c) ? a : '';}; +  }, +  getMemento: function(){ +    var rows = []; +    angular.foreach(this.board, function(row){ +      rows.push(row.join(',')); +    }); +    return rows.join(';') + '/' + this.nextMove; +  }, +  setMemento: function(value) { +    if (value) { +      value = value.split('/'); +      this.nextMove = value[1]; +      angular.foreach(value[0].split(';'), function(row, i){ +        this.board[i] = row.split(','); +      }, this); +    } else { +      this.reset(); +    } +  } +}; +</script> +<h3>Tic-Tac-Toe</h3> +Next Player: {{nextMove}} +<div ng:show="winner">Player {{winner}} has won!</div> +<table ng:controller="TicTacToeCntl"> +  <tr ng:repeat="row in board" style="height:15px;"> +    <td ng:repeat="cell in row" ng:style="cellStyle" +            ng:click="dropPiece($parent.$index, $index)">{{cell}}</td> +  </tr> +</table> +<button ng:click="reset()">reset board</button> +    </body> -</html> +</html>
\ No newline at end of file | 
