On Github EJIqpEP / angularjs_presentation
Presentation created by Kochergin Alexander
is an open-source JavaScript framework, maintained by Google, that assists with running single-page applications. Its goal is to augment browser-based applications with model–view–controller (MVC) capability, in an effort to make both development and testing easier.
Oh hey, these are some notes. They'll be hidden in your presentation, but you can see them if you open the speaker notes window (hit 's' on your keyboard).Developed in 2009 by Misko Hevery and Adam Abrons for commercial puproses, but later Angular becomes open-source library.
Hevery, who works in Google, continues to develop and maintain the library.
Version 1.0 of AngularJS was released in December 2012
Html
<input id="name" type="text"> <h2 id="greeting"></h2>
JS
$(function () { var name = $('#name'); var greeting = $('#greeting'); name.keyup(function () { greeting.text('Hello' + name.val() + '!'); }) })
<input type="text" ng-model="name"> <h2>Hello {{name}}</h2>
Little reusable code
app.directive "datepicker", -> require: "ngModel" link: (scope, el, attr, ngModel) -> $(el).datepicker('option', 'dateFormat', 'dd/mm/yy') $(el).datepicker dateFormat: "dd/mm/yy" changeMonth: true changeYear: true buttonImageOnly: true buttonImage: '/assets/calendar_icon.png' showOn: 'both' onSelect: (dateText) -> scope.$apply -> ngModel.$setViewValue dateText
Usage
<input datepicker="" ng-model="transactionDate">
<!doctype html> <html ng-app> <head> <script src="angular.js"></script> </head> <body> <p ng-init="name='World' ">Hello {{name}}</p> </body> </html>
<!DOCTYPE html> <html ng-app='app'> <head> <title>AngularMoney</title> <%= javascript_include_tag "application" %> <%= stylesheet_link_tag "application", :media => "all" %> <%= csrf_meta_tags %> </head> <body> <div ui-view=""></div> </body> </html>
@app = angular.module('app', [ # ngResource 'ngResource', # ui-router 'ui.state', 'security', 'app.directives' ])
app.config ['$stateProvider', '$urlRouterProvider', ($stateProvider, $urlRouterProvider) -> $urlRouterProvider .otherwise("/expenses_transactions/new") .state "incomes", parent: "default" url: "/incomes" views: "": controller: "IncomesController" templateUrl: "/assets/templates/incomes/index.html.slim" .state "incomes_transactions_new", parent: "incomes_transactions" url: "/new" views: "@default": controller: "IncomesTransactionsController" templateUrl: "/assets/templates/incomes_transactions/new.slim" ]
app.controller "ApplicationController", ($scope, security) -> console.log 'In ApplicationController' $scope.debug = false $scope.isAuthenticated = security.isAuthenticated $scope.loadLocation = (url) -> console.log url location.href = url
app.controller "ExpensesController", ($scope, $http, $location, $state, $stateParams, Expense) -> $scope.expenses = {} $scope.expense = '' $scope.editing = '' Expense.query( {} # Success , (response) -> $scope.expenses = response # Error , (response) -> )
if $state.current.name == 'expenses' $scope.update = -> Expense.update id: @editingForm.id.$viewValue , expense: title: @editingForm.title.$viewValue hidden: @editingForm.hidden.$viewValue # Success , (response) -> $scope.editing = '' # Error , (response) ->
$scope.cancel = -> $scope.editing = '' $scope.creating = '' $scope.editingToggle = (id) -> $scope.editing = id $scope.create = -> Expense.save( {} , expense: title: @creatingForm.title.$viewValue # Success , (response) -> $scope.creating = '' $scope.expenses.unshift(response) # Error , (response) -> )
$scope.destroy = (id) -> Expense.delete id: id # Success , (response) -> i = 0 while i < $scope.expenses.length if $scope.expenses[i]['id'] is id $scope.expenses.splice(i,1) i++ # Error , (response) ->
app.factory "Expense", ['$resource', 'TokenHandler', 'apiPrefix', ($resource, tokenHandler, apiPrefix) -> resource = $resource( apiPrefix + "/expenses/:id", id: "@id" , update: method: "PUT" ) resource = tokenHandler.wrapActions(resource, ["query", "update", "delete", "create", "get"]) resource ]
h2 Expenses .row .span9 a.add-expense href='#' ng-click='creating=true' ng-hide='creating' i.icon-plus | Add expense .creating-container ng-show='creating' form.form-horizontal name='creatingForm' .control-group label.control-label Expense Name: .controls input type='text' name='title' ng-model='title' div ng-repeat='error in errors.title' {{error}} .control-group label.control-label Hide from list: .controls input type='checkbox' name='hidden' ng-model='hidden' .control-group .controls a.btn.btn-primary.create href='#' ng-click='create()' Create a.btn.btn-primary.cancel href='#' ng-click='cancel()' Cancel .row ng-repeat='expense in expenses' div ng-hide='expense.id == editing' li ng-class='{hiddenClass: expense.hidden}' | {{expense.title}} .pull-right a ng-click='editingToggle(expense.id)' href='#' i.icon-edit a ng-click='destroy(expense.id, expense.title)' href='#' i.icon-trash .edit-container ng-show='expense.id == editing' form class='form-horizontal' name='editingForm' .control-group label class='control-label' Income title .controls input type='text' placeholder='Title' name='title' ng-model='expense.title' div ng-repeat='error in errors.title' {{error}} .control-group label.control-label Hide from list: .controls input type='checkbox' name='hidden' ng-model='expense.hidden' .control-group .controls input type='hidden' name='id' ng-model='expense.id' .control-group .controls a.btn.btn-primary href='#' ng-click='update()' Edit a.btn.btn-primary href='#' ng-click='cancel()' Cancel .span3 .well p | Welcome to the simple-forum project. This an application designed primarily in AngularJS for a front-end and Ruby on Rails as a back-end. p | Please feel free to leave a comment. Try to keep it civil and clean. Thanks!
1. gem install angularjs_scaffold 2. rails g angularjs:install 3. rails g scaffold Post title:string body:string 4. rake db:migrate 5. rails g angularjs:scaffold Posts