16
od Dinosaura k JavaScriptu Ladislav Gažo [email protected] @ladislavGazo

AngularJS first steps

  • Upload
    seges

  • View
    3.283

  • Download
    0

Embed Size (px)

DESCRIPTION

From Java Dinosaur to AngularJS JavaScripter - introduction talk to powerful AngularJS framework

Citation preview

Page 1: AngularJS first steps

od Dinosaura k JavaScriptu

Ladislav Gažo

[email protected]@ladislavGazo

Page 2: AngularJS first steps

2 | Internal use only

JavaScript.... whaaat?

Page 3: AngularJS first steps

3 | Internal use only

I need CLEVER JavaScript framework

bottle for the trip

Page 4: AngularJS first steps

4 | Internal use only

A co to ten angulár umí?

• Data binding

• Controller

• Plain JavaScript

• Validation

• Server communication

• Directives

• Injection

• Testing

Page 5: AngularJS first steps

5 | Internal use only

<h2>BizMon</h2><div id="bizmonApp" ng-controller="BizmonCtrl">

<div class="navbar navbar-fixed-top"><div class="navbar-inner">

<div class="container"><a class="brand" href="#">Bizmon</a><ul class="nav">

<li ng-repeat="project in projects"><a ng-href="#/projects/

{{project.id}}">{{project.name}}</a></li>

</ul></div>

</div></div><div class="container-fluid">

<div class="row-fluid" ng-view></div>

<footer> <p>&copy; Seges 2012</p> </footer></div>

</div>

Page 6: AngularJS first steps

6 | Internal use only

Curly brackets?

In HTML?

Page 7: AngularJS first steps

7 | Internal use only

function BizmonCtrl($scope, projectService) {$scope.projects = projectService.query();

}BizmonCtrl.$inject = ["$scope", "projectService"];

Page 8: AngularJS first steps

8 | Internal use only

angular.module('bizmonApp.services', [ 'ngResource' ]).factory('projectService', function($resource) {var service = $resource('rest/projects/:projectId', {}, {});return service;

});

mvn -o archetype:generate -DarchetypeGroupId=sk.seges.acris.archetype -DarchetypeArtifactId=acris-archetype-rest-server

( AcrIS - http://acris.googlecode.com )

Page 9: AngularJS first steps

9 | Internal use only

ng-click wohohooo

Page 10: AngularJS first steps

10 | Internal use only

<tr ng-repeat="issueState in prjScope.issueStates"><td ng-class="'operation-' + issueState.operation">

<a ng-click="editIssue(issueState)">{{issueState.uuid}}</a></td><td>{{issueState.reason}}</td><td>

<span class="btn-group" ng-show="projectScopeViews[prjScope.id].edit"><a class="btn btn-primary" ng-click="toggleOperation(issueState)">

<span ng-bind="issueState.operation"></span></a><a class="btn btn-danger" ng-click="deleteIssue(prjScope,

issueState)">Delete</a></span>

</td></tr>

Page 11: AngularJS first steps

11 | Internal use only

<input type="textarea" ng-model="activeIssueState.reason" placeholder="optional reason why you are creating the issue"

size="4"/>

Page 12: AngularJS first steps

12 | Internal use only

Neatness

Page 13: AngularJS first steps

13 | Internal use only

var inputNameDirective = ['$interpolate', function($interpolate) { return { restrict: 'A', scope: { inputName: 'attribute', ngModel: 'accessor' }, require: ['ngModel','^?form'], link: function (scope, element, attrs, ctrl) { var ex = $interpolate(scope.inputName); scope.nameTransformed = ex(scope.$parent);

var modelCtrl = ctrl[0]; modelCtrl.$name = scope.nameTransformed;

var formCtrl = ctrl[1] || nullFormCtrl; formCtrl.$addControl(modelCtrl); } }; }];

angular.module('bizmonApp.directives',[]).directive('inputName', inputNameDirective);

Page 14: AngularJS first steps

14 | Internal use only

Page 15: AngularJS first steps

15 | Internal use only

WORK with US

Thank you for your patience

[email protected]@ladislavGazo

Page 16: AngularJS first steps

16 | Internal use only

Links

• BizMon project - https://github.com/lgazo/bizmon

• AcrIS – http://acris.googlecode.com

• AngularJS – http://angularjs.org