diff options
| -rw-r--r-- | docs/content/cookbook/advancedform.ngdoc | 149 | ||||
| -rw-r--r-- | docs/content/cookbook/buzz.ngdoc | 2 | ||||
| -rw-r--r-- | docs/content/cookbook/form.ngdoc | 16 | ||||
| -rw-r--r-- | docs/content/cookbook/mvc.ngdoc | 93 | ||||
| -rw-r--r-- | docs/content/tutorial/step_04.ngdoc | 4 | ||||
| -rw-r--r-- | docs/content/tutorial/step_08.ngdoc | 2 | ||||
| -rw-r--r-- | docs/content/tutorial/step_10.ngdoc | 2 | ||||
| -rw-r--r-- | docs/content/tutorial/step_11.ngdoc | 2 | 
8 files changed, 129 insertions, 141 deletions
| diff --git a/docs/content/cookbook/advancedform.ngdoc b/docs/content/cookbook/advancedform.ngdoc index e14be8b4..b376cbee 100644 --- a/docs/content/cookbook/advancedform.ngdoc +++ b/docs/content/cookbook/advancedform.ngdoc @@ -9,80 +9,80 @@ detection, and preventing invalid form submission.  <doc:example> - <doc:source> -    <script> -    UserForm.$inject = ['$invalidWidgets']; -    function UserForm($invalidWidgets){ -      this.$invalidWidgets = $invalidWidgets; -      this.state = /^\w\w$/; -      this.zip = /^\d\d\d\d\d$/; -      this.master = { -        name: 'John Smith', -        address:{ -          line1: '123 Main St.', -          city:'Anytown', -          state:'AA', -          zip:'12345' -        }, -        contacts:[ -          {type:'phone', value:'1(234) 555-1212'} -        ] -      }; -      this.cancel(); -    } - - -    UserForm.prototype = { -      cancel: function(){ -        this.form = angular.copy(this.master); -      }, - - -      save: function(){ -        this.master = this.form; -        this.cancel(); -      } -    }; -    </script> -    <div ng:controller="UserForm"> - - -      <label>Name:</label><br/> -      <input type="text" name="form.name" ng:required/> <br/><br/> - - -      <label>Address:</label><br/> -      <input type="text" name="form.address.line1" size="33" ng:required/> <br/> -      <input type="text" name="form.address.city" size="12" ng:required/>, -      <input type="text" name="form.address.state" size="2" ng:required ng:validate="regexp:state"/> -      <input type="text" name="form.address.zip" size="5" ng:required +<doc:source> +   <script> +   UserForm.$inject = ['$invalidWidgets']; +   function UserForm($invalidWidgets){ +     this.$invalidWidgets = $invalidWidgets; +     this.state = /^\w\w$/; +     this.zip = /^\d\d\d\d\d$/; +     this.master = { +       name: 'John Smith', +       address:{ +         line1: '123 Main St.', +         city:'Anytown', +         state:'AA', +         zip:'12345' +       }, +       contacts:[ +         {type:'phone', value:'1(234) 555-1212'} +       ] +     }; +     this.cancel(); +   } + + +   UserForm.prototype = { +     cancel: function(){ +       this.form = angular.copy(this.master); +     }, + + +     save: function(){ +       this.master = this.form; +       this.cancel(); +     } +   }; +   </script> +   <div ng:controller="UserForm"> + + +     <label>Name:</label><br/> +     <input type="text" name="form.name" ng:required/> <br/><br/> + + +     <label>Address:</label><br/> +     <input type="text" name="form.address.line1" size="33" ng:required/> <br/> +     <input type="text" name="form.address.city" size="12" ng:required/>, +     <input type="text" name="form.address.state" size="2" ng:required ng:validate="regexp:state"/> +     <input type="text" name="form.address.zip" size="5" ng:required  ng:validate="regexp:zip"/><br/><br/> -      <label>Phone:</label> -      [ <a href="" ng:click="form.contacts.$add()">add</a> ] -      <div ng:repeat="contact in form.contacts"> -        <select name="contact.type"> -          <option>email</option> -          <option>phone</option> -          <option>pager</option> -          <option>IM</option> -        </select> -        <input type="text" name="contact.value" ng:required/> -         [ <a href="" ng:click="form.contacts.$remove(contact)">X</a> ] -      </div> -    <button ng:click="cancel()" disabled="{{master.$equals(form)}}">Cancel</button> -    <button ng:click="save()" disabled="{{$invalidWidgets.visible() || +     <label>Contacts:</label> +     [ <a href="" ng:click="form.contacts.$add()">add</a> ] +     <div ng:repeat="contact in form.contacts"> +       <select name="contact.type"> +         <option>email</option> +         <option>phone</option> +         <option>pager</option> +         <option>IM</option> +       </select> +       <input type="text" name="contact.value" ng:required/> +        [ <a href="" ng:click="form.contacts.$remove(contact)">X</a> ] +     </div> +   <button ng:click="cancel()" disabled="{{master.$equals(form)}}">Cancel</button> +   <button ng:click="save()" disabled="{{$invalidWidgets.visible() ||  master.$equals(form)}}">Save</button> -    <hr/> -    Debug View: -    <pre>form={{form}} -    master={{master}}</pre> -    </div> - </doc:source> - <doc:scenario> +   <hr/> +   Debug View: +   <pre>form={{form}} +   master={{master}}</pre> +   </div> +</doc:source> +<doc:scenario>    it('should enable save button', function(){      expect(element(':button:contains(Save)').attr('disabled')).toBeTruthy();      input('form.name').enter(''); @@ -100,7 +100,7 @@ master.$equals(form)}}">Save</button>      expect(element(':button:contains(Cancel)').attr('disabled')).toBeTruthy();      expect(element(':input[name=form.name]').val()).toEqual('John Smith');    }); - </doc:scenario> +</doc:scenario>  </doc:example> @@ -109,15 +109,10 @@ master.$equals(form)}}">Save</button>  #Things to notice -* Cancel & save buttons are only enabled if the form is dirty -- there is something to cancel or -  save. +* Cancel & save buttons are only enabled if the form is dirty — there is something to cancel or +save.  * Save button is only enabled if there are no validation errors on the form.  * Cancel reverts the form changes back to original state.  * Save updates the internal model of the form.  * Debug view shows the two models. One presented to the user form and the other being the pristine -  copy master. - - - - - +copy master. diff --git a/docs/content/cookbook/buzz.ngdoc b/docs/content/cookbook/buzz.ngdoc index 52fa5647..f67b4d89 100644 --- a/docs/content/cookbook/buzz.ngdoc +++ b/docs/content/cookbook/buzz.ngdoc @@ -43,7 +43,7 @@ to retrieve Buzz activity and comments.         <img src="{{item.actor.thumbnailUrl}}" style="max-height:30px;max-width:30px;"/>         <a href="{{item.actor.profileUrl}}">{{item.actor.name}}</a>         <a href="" ng:click="expandReplies(item)" style="float: right;"> -        Expand replies: {{item.links.replies.count}} +        Expand replies: {{item.links.replies[0].count}}         </a>        </h1>        {{item.object.content | html}} diff --git a/docs/content/cookbook/form.ngdoc b/docs/content/cookbook/form.ngdoc index a224505f..55aeb4b9 100644 --- a/docs/content/cookbook/form.ngdoc +++ b/docs/content/cookbook/form.ngdoc @@ -78,27 +78,19 @@ ng:validate="regexp:zip"/><br/><br/>    it('should validate zip', function(){      expect(using('.example').element(':input[name=user.address.zip]').attr('className')) -      .not().toMatch(/ng-validation-error/) - - +      .not().toMatch(/ng-validation-error/);      using('.example').input('user.address.zip').enter('abc'); - -      expect(using('.example').element(':input[name=user.address.zip]').attr('className')) -      .toMatch(/ng-validation-error/) +      .toMatch(/ng-validation-error/);    });    it('should validate state', function(){      expect(using('.example').element(':input[name=user.address.state]').attr('className')) -      .not().toMatch(/ng-validation-error/) - - +      .not().toMatch(/ng-validation-error/);      using('.example').input('user.address.state').enter('XXX'); - -      expect(using('.example').element(':input[name=user.address.state]').attr('className')) -      .toMatch(/ng-validation-error/) +      .toMatch(/ng-validation-error/);    });   </doc:scenario>  </doc:example> diff --git a/docs/content/cookbook/mvc.ngdoc b/docs/content/cookbook/mvc.ngdoc index bc0eb653..04feffcc 100644 --- a/docs/content/cookbook/mvc.ngdoc +++ b/docs/content/cookbook/mvc.ngdoc @@ -17,7 +17,7 @@ no connection between the controller and the view.  <doc:example> - <doc:source> +  <doc:source>      <script>      function TicTacToeCntl($location){        this.$location = $location; @@ -34,8 +34,8 @@ no connection between the controller and the view.      }      TicTacToeCntl.prototype = {        dropPiece: function(row, col) { -        if (!this.winner && !this.board) { -          this.board = this.nextMove; +        if (!this.winner && !this.board[row][col]) { +          this.board[row][col] = this.nextMove;            this.nextMove = this.nextMove == 'X' ? 'O' : 'X';            this.setUrl();          } @@ -51,15 +51,15 @@ no connection between the controller and the view.          this.setUrl();        },        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, b, b);} -       function col(c) { return same(b, b, b);} -       function diagonal(i) { return same(b[1-i], b, b[1+i]);} -       function same(a, b, c) { return (a==b && b==c) ? a : '';}; +        var b = this.board; +        this.winner = +          row(0) || row(1) || row(2) || +          col(0) || col(1) || col(2) || +          diagonal(-1) || diagonal(1); +        function row(row) { return same(b[row][0], b[row][1], b[row][2]);} +        function col(col) { return same(b[0][col], b[1][col], b[2][col]);} +        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 : '';};        },        setUrl: function(){          var rows = []; @@ -68,12 +68,12 @@ no connection between the controller and the view.          });          this.$location.hashSearch.board = rows.join(';') + '/' + this.nextMove;        }, -      readUrl: function(scope, value) { +      readUrl: function(value) {          if (value) {            value = value.split('/'); -          this.nextMove = value; -          angular.forEach(value.split(';'), function(row, i){ -            this.board = row.split(','); +          this.nextMove = value[1]; +          angular.forEach(value[0].split(';'), function(row, col){ +            this.board[col] = row.split(',');            }, this);            this.grade();          } else { @@ -82,36 +82,38 @@ no connection between the controller and the view.        }      };      </script> + +      <h3>Tic-Tac-Toe</h3>      <div ng:controller="TicTacToeCntl">      Next Player: {{nextMove}}      <div class="winner" ng:show="winner">Player {{winner}} has won!</div> -    <table class="board"> -      <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> +      <table class="board"> +        <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>      </div> - </doc:source> - <doc:scenario> -   it('should play a game', function(){ -    piece(1, 1); -    expect(binding('nextMove')).toEqual('O'); -    piece(3, 1); -    expect(binding('nextMove')).toEqual('X'); -    piece(1, 2); -    piece(3, 2); -    piece(1, 3); -    expect(element('.winner').text()).toEqual('Player X has won!'); -   }); - - -   function piece(row, col) { -     element('.board tr:nth-child('+row+') td:nth-child('+col+')').click(); -   } - </doc:scenario> +  </doc:source> +  <doc:scenario> +    it('should play a game', function(){ +     piece(1, 1); +     expect(binding('nextMove')).toEqual('O'); +     piece(3, 1); +     expect(binding('nextMove')).toEqual('X'); +     piece(1, 2); +     piece(3, 2); +     piece(1, 3); +     expect(element('.winner').text()).toEqual('Player X has won!'); +    }); + + +    function piece(row, col) { +      element('.board tr:nth-child('+row+') td:nth-child('+col+')').click(); +    } +  </doc:scenario>  </doc:example> @@ -123,13 +125,12 @@ no connection between the controller and the view.  * The controller is defined in JavaScript and has no reference to the rendering logic.  * The controller is instantiated by <angular/> and injected into the view.  * The controller can be instantiated in isolation (without a view) and the code will still execute. -  This makes it very testable. +This makes it very testable.  * The HTML view is a projection of the model. In the above example, the model is stored in the -  board variable. +board variable.  * All of the controller's properties (such as board and nextMove) are available to the view.  * Changing the model changes the view.  * The view can call any controller function.  * In this example, the `setUrl()` and `readUrl()` functions copy the game state to/from the URL's -  hash so the browser's back button will undo game steps. See deep-linking. This example calls -  {@link api/angular.scope.$watch $watch()} to set up a listener that invokes `readUrl()` when -needed. +hash so the browser's back button will undo game steps. See deep-linking. This example calls {@link +api/angular.scope.$watch $watch()} to set up a listener that invokes `readUrl()` when needed. diff --git a/docs/content/tutorial/step_04.ngdoc b/docs/content/tutorial/step_04.ngdoc index 7c942c34..39bb3d51 100644 --- a/docs/content/tutorial/step_04.ngdoc +++ b/docs/content/tutorial/step_04.ngdoc @@ -180,7 +180,7 @@ The unit test now verifies that the default ordering property is set.  We used Jasmine's API to extract the controller construction into a `beforeEach` block, which is -shared by all tests in the nearest `describe` block. +shared by all tests in the parent `describe` block.  To run the unit tests, once again execute the `./scripts/test.sh` script and you should see the @@ -205,7 +205,7 @@ __`test/e2e/scenarios.js`:__          function() { -      // let's narrow the dataset to make the test assertions shorter +      // narrow the dataset to make the test assertions shorter        input('query').enter('tablet'); diff --git a/docs/content/tutorial/step_08.ngdoc b/docs/content/tutorial/step_08.ngdoc index c0ba2831..a430387b 100644 --- a/docs/content/tutorial/step_08.ngdoc +++ b/docs/content/tutorial/step_08.ngdoc @@ -111,7 +111,7 @@ our model into the view.  __`app/partials/phone-details.html`:__  <pre> -<img ng:src="{{phone.images}}" class="phone"/> +<img ng:src="{{phone.images[0]}}" class="phone"/>  <h1>{{phone.name}}</h1> diff --git a/docs/content/tutorial/step_10.ngdoc b/docs/content/tutorial/step_10.ngdoc index 3a8dbd38..109f5b77 100644 --- a/docs/content/tutorial/step_10.ngdoc +++ b/docs/content/tutorial/step_10.ngdoc @@ -42,7 +42,7 @@ function PhoneDetailCtrl($xhr) {    $xhr('GET', 'phones/' + self.params.phoneId + '.json', function(code, response) {      self.phone = response; -    self.mainImageUrl = response.images; +    self.mainImageUrl = response.images[0];    }); diff --git a/docs/content/tutorial/step_11.ngdoc b/docs/content/tutorial/step_11.ngdoc index 7a176591..892342b5 100644 --- a/docs/content/tutorial/step_11.ngdoc +++ b/docs/content/tutorial/step_11.ngdoc @@ -102,7 +102,7 @@ function PhoneDetailCtrl(Phone_) {    self.phone = Phone_.get({phoneId: self.params.phoneId}, function(phone) { -    self.mainImageUrl = phone.images; +    self.mainImageUrl = phone.images[0];    }); | 
