diff options
| author | Igor Minar | 2012-04-11 17:00:26 -0700 |
|---|---|---|
| committer | Igor Minar | 2012-04-12 02:45:12 -0700 |
| commit | 2037facc998b4da2bbb2b62690faf4d970470c12 (patch) | |
| tree | d2dc8bffee0d15d213154855f4dc76be23cb86a5 /docs | |
| parent | b2d0a386f693d768cd82a3a0c54c43a926b4f339 (diff) | |
| download | angular.js-2037facc998b4da2bbb2b62690faf4d970470c12.tar.bz2 | |
docs(tutorial): update step-04 to v1.0
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/content/tutorial/step_04.ngdoc | 42 | ||||
| -rw-r--r-- | docs/img/tutorial/tutorial_04-06_final.png | bin | 163271 -> 0 bytes | |||
| -rw-r--r-- | docs/img/tutorial/tutorial_04.png | bin | 0 -> 126728 bytes |
3 files changed, 22 insertions, 20 deletions
diff --git a/docs/content/tutorial/step_04.ngdoc b/docs/content/tutorial/step_04.ngdoc index ebeb7cca..39e8eeec 100644 --- a/docs/content/tutorial/step_04.ngdoc +++ b/docs/content/tutorial/step_04.ngdoc @@ -2,8 +2,6 @@ @name Tutorial: 4 - Two-way Data Binding @description -<h2 style="color: red">This page has not been updated for AngularJS 1.0 yet</h2> - <ul doc:tutorial-nav="4"></ul> @@ -29,11 +27,11 @@ __`app/index.html`:__ ... <ul class="controls"> <li> - Search: <input type="text" ng:model="query"/> + Search: <input ng-model="query"> </li> <li> Sort by: - <select ng:model="orderProp"> + <select ng-model="orderProp"> <option value="name">Alphabetical</option> <option value="age">Newest</option> </select> @@ -41,7 +39,7 @@ __`app/index.html`:__ </ul> <ul class="phones"> - <li ng:repeat="phone in phones.$filter(query).$orderBy(orderProp)"> + <li ng-repeat="phone in phones | filter:query | orderBy:orderProp"> {{phone.name}} <p>{{phone.snippet}}</p> </li> @@ -54,14 +52,14 @@ We made the following changes to the `index.html` template: * First, we added a `<select>` html element named `orderProp`, so that our users can pick from the two provided sorting options. - <img src="img/tutorial/tutorial_04-06_final.png"> + <img src="img/tutorial/tutorial_04.png"> -* We then chained the `$filter` method with {@link api/angular.module.ng.$filter.orderBy `$orderBy`} method to -further process the input into the repeater. `$orderBy` is a utility method similar to {@link -api/angular.module.ng.$filter.filter `$filter`}, but instead of filtering an array, it reorders it. +* We then chained the `filter` filter with {@link api/angular.module.ng.$filter.orderBy `orderBy`} +filter to further process the input into the repeater. `orderBy` is a filter that takes an input +array, copies it and reorders the copy which is then returned. Angular creates a two way data-binding between the select element and the `orderProp` model. -`orderProp` is then used as the input for the `$orderBy` method. +`orderProp` is then used as the input for the `orderBy` filter. As we discussed in the section about data-binding and the repeater in step 3, whenever the model changes (for example because a user changes the order with the select drop down menu), Angular's @@ -76,8 +74,8 @@ __`app/js/controller.js`:__ <pre> /* App Controllers */ -function PhoneListCtrl() { - this.phones = [{"name": "Nexus S", +function PhoneListCtrl($scope) { + $scope.phones = [{"name": "Nexus S", "snippet": "Fast just got faster with Nexus S.", "age": 0}, {"name": "Motorola XOOMâ„¢ with Wi-Fi", @@ -87,7 +85,7 @@ function PhoneListCtrl() { "snippet": "The Next, Next Generation tablet.", "age": 2}]; - this.orderProp = 'age'; + $scope.orderProp = 'age'; } </pre> @@ -95,8 +93,8 @@ function PhoneListCtrl() { record. This property is used to order phones by age. * We added a line to the controller that sets the default value of `orderProp` to `age`. If we had -not set the default value here, angular would have used the value of the first `<option>` element -(`'name'`) when it initialized the data model. +not set the default value here, the model would stay uninitialized until our user would pick an +option from the drop down menu. This is a good time to talk about two-way data-binding. Notice that when the app is loaded in the browser, "Newest" is selected in the drop down menu. This is because we set `orderProp` to `'age'` @@ -120,17 +118,18 @@ describe('PhoneCat controllers', function() { var scope, $browser, ctrl; beforeEach(function() { - ctrl = new PhoneListCtrl(); + scope = {}; + ctrl = new PhoneListCtrl(scope); }); it('should create "phones" model with 3 phones', function() { - expect(ctrl.phones.length).toBe(3); + expect(scope.phones.length).toBe(3); }); it('should set the default value of orderProp model', function() { - expect(ctrl.orderProp).toBe('age'); + expect(scope.orderProp).toBe('age'); }); }); }); @@ -162,13 +161,13 @@ __`test/e2e/scenarios.js`:__ // narrow the dataset to make the test assertions shorter input('query').enter('tablet'); - expect(repeater('.phones li', 'Phone List').column('a')). + expect(repeater('.phones li', 'Phone List').column('phone.name')). toEqual(["Motorola XOOM\u2122 with Wi-Fi", "MOTOROLA XOOM\u2122"]); select('orderProp').option('alphabetical'); - expect(repeater('.phones li', 'Phone List').column('a')). + expect(repeater('.phones li', 'Phone List').column('phone.name')). toEqual(["MOTOROLA XOOM\u2122", "Motorola XOOM\u2122 with Wi-Fi"]); }); @@ -184,9 +183,12 @@ Angular's server}. # Experiments +<div style="display:none"> +!!!!! TODO(i): we need to fix select/option to support unknown option !!!!! * In the `PhoneListCtrl` controller, remove the statement that sets the `orderProp` value and you'll see that the ordering as well as the current selection in the dropdown menu will default to "Alphabetical". +</div> * Add an `{{orderProp}}` binding into the `index.html` template to display its current value as text. diff --git a/docs/img/tutorial/tutorial_04-06_final.png b/docs/img/tutorial/tutorial_04-06_final.png Binary files differdeleted file mode 100644 index 68268d58..00000000 --- a/docs/img/tutorial/tutorial_04-06_final.png +++ /dev/null diff --git a/docs/img/tutorial/tutorial_04.png b/docs/img/tutorial/tutorial_04.png Binary files differnew file mode 100644 index 00000000..3d028771 --- /dev/null +++ b/docs/img/tutorial/tutorial_04.png |
