3 dicembre 2014

angular js: set input focus

var app = angular

.module("app")

.factory("mySetFocus", ["$timeout", function($timeout){
return {
focus : {},
set : function(name){
this.focus[name] = !!!this.focus[name];
}
};
}])

.directive('myFocus', ["$timeout", "mySetFocus", function($timeout, mySetFocus) {
return {
restrict: 'A',
link : function(scope, element, attrs) {
scope.setter = mySetFocus;
scope.$watch("setter.focus."+attrs.name, function(v){
if(v==undefined) return;
$timeout(function() {
element[0].focus();
});
});
}
};
}])

.controller("myCtrl", ["$scope", "mySetFocus", function($scope, mySetFocus){
mySetFocus.set("myfield");
}]);

17 maggio 2014

AngularJs: creare una tabella con riodinamenti crescenti e decrescenti via template


Nel template html seguente, viene creata una tabella tramite AngularJs in cui le colonne sono riordinabli con un click sull'header della colonna.
Questo viene fatto tramite una semplice condizione

ng-click = "colOrd= colOrd=='fieldname' && '-fieldame' || 'fieldname'"

che assegna al parametro "colOrd" utilizzato per il filtro "orderBy", il nome del campo preceduto dal segno meno (ordinamento decrescente) se gia è attivo l'ordinamento crescente su questa colonna.


<span>ordinamento attuale: {{colOrd}}</span>
<table border=1 cellpadding=5>
  <tr>
      <td ng-click="colOrd= colOrd=='id' && '-id' || 'id'">Id:</td>
      <td ng-click="colOrd= colOrd=='nome' && '-nome' || 'nome'">Nome:</td>
      <td ng-click="colOrd= colOrd=='cognome' && '-cognome' || 'cognome'">Cognome:</td>
      <td ng-click="colOrd= colOrd=='cell' && '-cell' || 'cell' ">Cellulare:</td>
  </tr>
  <tr ng-repeat="item in mylist | orderBy:colOrd">
      <td>{{item.id}}</td>
      <td>{{item.nome}}</td>
      <td>{{item.cognome}}</td>
      <td>{{item.cell}}</td>
  </tr>
</table>