Sencha touch: Sviluppare un'app - 4° parte

99
SESSIONE LIVE Sencha Touch Speaker: Giuseppe Toto

description

Talk: Sencha Touch Articolo di riferimento: www.giuseppetoto.it/mobile/sencha-touch-2-build-mobile-web-apps-html5

Transcript of Sencha touch: Sviluppare un'app - 4° parte

Page 1: Sencha touch: Sviluppare un'app - 4° parte

SESSIONE  LIVE

Sencha Touch Speaker:  Giuseppe  Toto

Page 2: Sencha touch: Sviluppare un'app - 4° parte

Build for Mobile and Desktop h8p://www.sencha.com/products/architect/  

Page 3: Sencha touch: Sviluppare un'app - 4° parte

•  E’  un  ambiente  di  sviluppo  visuale  che  perme8e  di  proge8are  applicazioni  mobile  e  desktop  utilizzando  rispe8ivamente  i  framework  Sencha  Touch  2  e  Sencha  ExtJs  4

•  E’  disponibile  per  Windows,  Mac  e  Linux

•  E’  disponibile  a  pagamento  con  una  versione  di  prova  di  30  giorni  (rinnovabile)

•  La  licenza  costa  a8ualmente  294,00€  circa.

Page 4: Sencha touch: Sviluppare un'app - 4° parte

DI  COSA  ABBIAMO  BISOGNO  ?

•  Prima  di  utilizzare  Sencha  Architect  bisogno  di  installare: •  Java  Se  7  

•  Test  Command:  “java  –version” •  Ruby

•  Test  Command:  “ruby  –v” •  Apache  Ant  (per  fare  il  building  per  dispositivi  android)

•  Test  Command:  “ant  –  version”

Page 5: Sencha touch: Sviluppare un'app - 4° parte

Tu1i   noi,   in   certi   momenti,   abbiamo   sentito  l’esigenza   di   fare   una   lista   di   cose   da   fare,  ovvero  una  to  do  list.  

TO  DO  LIST

Page 6: Sencha touch: Sviluppare un'app - 4° parte

1°  PARTE

CREARE  UNA   “TO  DO  LIST”

Page 7: Sencha touch: Sviluppare un'app - 4° parte

Una   to   do   list   ci   perme1e   di   dare   una   forma  fisica   ai   mille   pensieri   che   ci   assillano   e   che  continuano  a  reclamare  la  nostra  a1enzione.

TO  DO  LIST

Page 8: Sencha touch: Sviluppare un'app - 4° parte

COSA  FAREMO  ?  

•  Il   nostro   prossimo   obie1ivo   è   creare   un’  applicazione   mobile   “to   do   list”     multi-­‐‑pia1aforma  tramite  Sencha  Architect.

Page 9: Sencha touch: Sviluppare un'app - 4° parte

COSA  AFFRONTEREMO •  Vedremo  come  creare  un  componente  LIST  per  visualizzare  una  lista  sia  dei  task  a1ivi  e  sia  di  quelli  completati.

h8p://docs.sencha.com/touch/2.3.0/#!/api/Ext.dataview.List  

Page 10: Sencha touch: Sviluppare un'app - 4° parte

COSA  AFFRONTEREMO  ?

•  Vedremo  come  poter  memorizzare  i  nostri  task: •  Analizzeremo  il  conce8o  di  Store  e  Proxy.

  •  Analizzeremo  il  conce8o  di  Model.

STORE

Page 11: Sencha touch: Sviluppare un'app - 4° parte

COSA  AFFRONTEREMO  ?

•  Creare   una   form   per  inserire   un   nuovo   task   e  modificarlo

Page 12: Sencha touch: Sviluppare un'app - 4° parte

COSA  AFFRONTEREMO  ?

•  Creare   navigation   view  per  tornare  alla  schermata  precendete

Page 13: Sencha touch: Sviluppare un'app - 4° parte

COSA  AFFRONTEREMO  ?

•  Creare   tabPanel   per  passare  da  una  sezione  all’altra  

Page 14: Sencha touch: Sviluppare un'app - 4° parte

LIST h8p://docs.sencha.com/touch/2.3.1/#!/api/Ext.dataview.List      

Page 15: Sencha touch: Sviluppare un'app - 4° parte

Ext.List

•  E’  utile  per  renderizzare  una  quantità  di  dati  (items)  all’interno  di  una  lista  scorrevole.

•  Su  ogni  item    possiamo  ca1urare  l’evento  “itemtap”(e  tanti  altri)

Page 16: Sencha touch: Sviluppare un'app - 4° parte

Creiamo  una  Lista  in  S.A. •  Cerchiamo  nella  Toolbox  il  componente  List  e  trasciniamolo  all’interno  

del  nostro  proge8o

•  Assegniamo  il  valore  “TaskList”  a  userClassName

Page 17: Sencha touch: Sviluppare un'app - 4° parte

Ext.List:  definire  i  dati

•  I  dati,  all’interno  della  lista,  possono  essere  definiti  in  due  modi: 1.  definendo  un  array  di  ogge1i  all’interno  della  variabile  data  del  componente

2.  Specificando  uno  Store  (vedremo  più  avanti)

Page 18: Sencha touch: Sviluppare un'app - 4° parte

Ext.List:  array  di  ogge8i

Page 19: Sencha touch: Sviluppare un'app - 4° parte

•  data    è  un  ogge8o  di  tipo  array  (parantesi  quadre)  che  contiene  a  sua  volta  una  lista  di  ogge8i  da  noi  definiti,  ovvero  una  lista  di  task.

Ext.List:  array  di  ogge8i

Page 20: Sencha touch: Sviluppare un'app - 4° parte

Renderizzare  i  dati (Ext.XTemplate)

h8p://docs.sencha.com/touch/2.3.0/#!/api/Ext.XTemplate  

Page 21: Sencha touch: Sviluppare un'app - 4° parte

Renderizzare  i  dati (Ext.XTemplate)

•  Ogni  ogge8o  presente  nell’array  “data”  sarà  renderizzato  all’interno  della  lista.

•  Possiamo  personalizzare  la  stru8ura  grafica  di  ogni  elemento  della  lista    definendo  l’html  all’interno  della  proprietà  itemTpl.

•  Nel  definire  il  template  possiamo  far  uso  dei  tag  html/css  e  di  tag  sostitutivi.    Questi  ultimi    perme8ono  di  rendere  il   template   dinamico   sostituendo   i   tag   con   i   valori   delle  variabili  dell’ogge8o.

Page 22: Sencha touch: Sviluppare un'app - 4° parte

ESEMPIO

Page 23: Sencha touch: Sviluppare un'app - 4° parte

Renderizzare  i  dati

TEMPLATE

Questa  è  la  stru8ura  html  che  sarà  applicata  ad  ogni  item  della  nostra  lista

Page 24: Sencha touch: Sviluppare un'app - 4° parte

COME  SALVARE  E  RECUPERARE  I  

TASK?   MODEL  –  STORE  -­‐‑  PROXY

Page 25: Sencha touch: Sviluppare un'app - 4° parte

MODEL h8p://docs-­‐‑origin.sencha.com/touch/2.3.1/#!/api/Ext.data.Model  

Page 26: Sencha touch: Sviluppare un'app - 4° parte

MODEL

•  Un  Model  rappresenta  conce8ualmente  una  particolare  entità,  un  ogge8o  che  spesso  fa  parte  del  nostro  mondo  reale  e  che  vogliamo  essere  in  grado  di  modellare.

•  Contiene  principalmente  “l’informazione”  espressa  mediante  le  sue  variabili  (fields).

•  Per  recuperare  un  field  si  utilizza  la  funzi

h8p://docs-­‐‑origin.sencha.com/touch/2.3.1/#!/api/Ext.data.Model  

Page 27: Sencha touch: Sviluppare un'app - 4° parte

MODEL

•  Ad  esempio  una  Persona,  una  Macchina,  un  Prodo1o  sono  entità  che  vorremmo  modellare  nel  nostro  sistema.

Page 28: Sencha touch: Sviluppare un'app - 4° parte

ESEMPIO  

Page 29: Sencha touch: Sviluppare un'app - 4° parte

ESEMPIO   Definiamo  una  classe  User  che  estende  la  classe  Model  (Ext.data.Model)

Page 30: Sencha touch: Sviluppare un'app - 4° parte

ESEMPIO •  Vengono  definiti  i  campi  che  costituiscono  la  nostra  entità.  

Page 31: Sencha touch: Sviluppare un'app - 4° parte

ESEMPIO

•  Eventuali  metodi  di  supporto

Page 32: Sencha touch: Sviluppare un'app - 4° parte

ISTANZIARE  UN  MODEL

•  N.B:  Per  recuperare  e  se8are  il  valore  di  un  field  si  utilizza  la  funzione  get  e  set

Page 33: Sencha touch: Sviluppare un'app - 4° parte

ESERCIZIO

Page 34: Sencha touch: Sviluppare un'app - 4° parte

TO  DO  LIST:  MODEL  TASK Task •  id  (int) •  name  (string) •  description  (string) •  createDate(date) •  completedDate(date) •  priority  (int) •  isCompleted  (boolean)

L’ogge8o  Task  rappresenta  le  informazioni  che  saranno  memorizzate  per  ogni  task  che  andremo  a  creare    

Page 35: Sencha touch: Sviluppare un'app - 4° parte

Definire  un  MODEL  in  Sencha  Architect

1

2

Page 36: Sencha touch: Sviluppare un'app - 4° parte

Definire  un  MODEL  in  Sencha  Architect

Cambiamo  il  nome  della  classe  in  “Task” 3

Page 37: Sencha touch: Sviluppare un'app - 4° parte

TYPE  FIELDS •  Per  ogni  campo  definiamo  il  tipo  di  valore  che  potrà  essere  

contenuto: •  Da  “Project  Inspector-­‐‑>Models-­‐‑>Task”  selezioniamo  un  field  e  

nella  sezione  “Config”  clicchiamo    su  “type”  selezionando  uno  dei  valori  disponibile  all’interno  della  select.

Esempio: Task •  id  (int) •  name  (string) •  description  (string) •  createDate(date) •  completedDate(date) •  priority  (int) •  isCompleted  (boolean)

Page 38: Sencha touch: Sviluppare un'app - 4° parte

Task  Model: codice  generato

Page 39: Sencha touch: Sviluppare un'app - 4° parte

STORE h8p://docs-­‐‑origin.sencha.com/touch/2.3.1/#!/api/Ext.data.Store  

Page 40: Sencha touch: Sviluppare un'app - 4° parte

STORE Model

Data  Model Data  Model Data  Model

Data  Model

Data  Model Data  Model

Data  Model Data  Model Data  Model

Page 41: Sencha touch: Sviluppare un'app - 4° parte

STORE

“WEB  SERVICES  API”

PROXY

Model

Data  Model Data  Model Data  Model

Data  Model

Data  Model Data  Model

Data  Model Data  Model Data  Model

Page 42: Sencha touch: Sviluppare un'app - 4° parte

STORE •  Uno  Store   perme8e  di  memorizzare,   interrogare   e  sincronizzare   i  

nostri  dati

•  I  dati  possono  essere  caricati  o  salvati  tramite  un  “Proxy”  (vedremo  tra  poco  che  cosa  si  intende  per  Proxy)  

•  Lo   store   fornisce   funzioni   di   ordinamento,   di   filtro   e   di  interrogazione.

•  Ogni   record   dello   store   non   è   altro   che   un’istanza   di   un   Model    

(data  model)  che  abbiamo  precedentemente  definito   •   Uno  Store    incapsula  un  insieme  di  Model.

Page 43: Sencha touch: Sviluppare un'app - 4° parte

STORE •  Lo  store  può  essere  associato  a  un  componente  di  Sencha  come  ad  

esempio  una  Lista  (Ext.List). •   La  lista  interrogherà  automaticamente  lo  store  visualizzando  i  

dati  al  suo  interno.  

Task  Model

taskStore

Page 44: Sencha touch: Sviluppare un'app - 4° parte

ESEMPIO: •  Definiamo  un  Model  per  rappresentare  l’entità  “utente”

Page 45: Sencha touch: Sviluppare un'app - 4° parte

ESEMPIO:

•  Definiamo  lo  store  “userStore”  associando  il  Model  e  un  insieme  di  dati.

Page 46: Sencha touch: Sviluppare un'app - 4° parte

ESEMPIO:

•  Definiamo  un  componente  “lista”  a  cui  è  associato  lo  store  “userStore”

•  Definiamo  anche  un  template  su  come  visualizzare  i  singoli  record  della  lista

Page 47: Sencha touch: Sviluppare un'app - 4° parte

CREARE  UNO  STORE  IN  SENCHA  ARCHITECT

Page 48: Sencha touch: Sviluppare un'app - 4° parte

CREARE  UNO  STORE  IN  SENCHA  ARCHITECT

Page 49: Sencha touch: Sviluppare un'app - 4° parte

CREARE  UNO  STORE  IN  SENCHA  ARCHITECT

Assegniamo  il  nome  della  classe

Page 50: Sencha touch: Sviluppare un'app - 4° parte

Associare  un  Model  allo  Store

In  questo  modo  lo  store  potrà  memorizzare  e  interrogaretante  istanze  di  tipo  Model  Task

Page 51: Sencha touch: Sviluppare un'app - 4° parte

PROXY h8p://docs-­‐‑origin.sencha.com/touch/2.3.1/#!/api/Ext.data.proxy.Proxy  

Page 52: Sencha touch: Sviluppare un'app - 4° parte

PROXY •  I  proxy  sono  usati  dagli  Stores  per  caricare  e  salvare  i  Model  data.

•  I  proxy  si  dividono  principalmente  in:

•  Proxy  di  tipo  Client: •  I  dati  sono  memorizzati/interrogati  localmente

•  Proxy  di  tipo  Server: •  I  dati  sono  memorizzati/interrogati  sul  server

Page 53: Sencha touch: Sviluppare un'app - 4° parte

CLIENT  PROXY

•  Local  Storage  Proxy: Salva  i  dati  nel  localstorage  del  Browser  (se  lo  supporta)

•  Memory  Proxy: Salva  in  dati  in  memoria.  Qualsiasi  dato  è  perso  quando  la  pagina  verrà  effe1uato  il  refresh

Page 54: Sencha touch: Sviluppare un'app - 4° parte

SERVER  PROXY •  Proxy  Ajax

Invia  richieste  (GET  &  POST)  al  server  dello  stesso  dominio

•  Proxy  JSonP              Perme8e  di  effe8uare  richieste  su  altri  server  remoti    (cross-­‐‑domain  request)

Page 55: Sencha touch: Sviluppare un'app - 4° parte

PROXY  LOCALSTORAGE

h8p://docs-­‐‑origin.sencha.com/touch/2.3.1/#!/api/Ext.data.proxy.LocalStorage  

Page 56: Sencha touch: Sviluppare un'app - 4° parte

PROXY  LOCALSTORAGE h8p://docs-­‐‑origin.sencha.com/touch/2.3.1/#!/api/Ext.data.proxy.LocalStorage  

•  Sfru8a  il  localstorage  del  Browser  per  memorizzare  localmente  i  data  Model  sul  client  browser.

  •  Il  localstorage    è  una  nuova  feature  introdo8a  con  HTML5  che    immagazzina  coppie  di  “chiave-­‐‑valore”.  

•  Nel  localstorage  non  possono  essere  memorizzate  stru8ure  complesse,  così  il  proxy  localstorage  sfru8a  automaticamente  la  tecnica  della  serializzazione/deserializzazione  per  salvare  e  recuperare  i  dati

Page 57: Sencha touch: Sviluppare un'app - 4° parte

ASSOCIARE  UN  PROXY  ALLO  STORE

•  Nella  ToolBox  cercare  il  componente  “Localstorage  Proxy”  e  trascinarlo  sul  “TaskStore”  presente  nel  Project  Inspector.

Page 58: Sencha touch: Sviluppare un'app - 4° parte

•  Da  ora  in  poi  tu8i  i  task  (Model  Task)  che  andremo  a  memorizzare  all’interno  del  TaskStore  saranno  memorizzati  automaticamente    nella  memoria  locale  del  nostro  browser.

•   N.B:  questo  tipo  di  proxy  funziona  solo  se  il  browser  supporta  il  localhostare

ASSOCIARE  UN  PROXY  ALLO  STORE

Page 59: Sencha touch: Sviluppare un'app - 4° parte

Generare  dati  di  test

Page 60: Sencha touch: Sviluppare un'app - 4° parte

Generiamo  dei  dati  di  test  all’interno  dello  Store

•  Selezioniamo  TaskStore  dal  Project  Inspector •  Selezioniamo  “data”  dal  Config

•  L’opzione  mock  up  only  fa  si  che  i  dati  di  test  non  saranno  caricati  al  momento  della  pubblicazione  dell’app

Page 61: Sencha touch: Sviluppare un'app - 4° parte

Risultato:

Page 62: Sencha touch: Sviluppare un'app - 4° parte

Anteprima:

Page 63: Sencha touch: Sviluppare un'app - 4° parte

NAVIGATION  VIEW

h8p://docs.sencha.com/touch/2.3.1/#!/api/Ext.navigation.View  

Ext.navigation.View xtype:  navigationview

Page 64: Sencha touch: Sviluppare un'app - 4° parte

Ext.navigation.View •  Perme8e  di  navigare  tra  diverse  view

•  Possiede  principalmente    due  funzione: •  “push”  per  passare  alla  successiva  view   •  “pop”  tornare  a  quella  precedente.

•  Si  occupa  di  creare  effe8i  di  animazione  di  transizione  (gli  effe8i  possono  essere  personalizzati)

Page 65: Sencha touch: Sviluppare un'app - 4° parte

ESEMPIO

Page 66: Sencha touch: Sviluppare un'app - 4° parte

Aggiungere  una  Navigation  View  al  nostro  proge8o

•  La  navigationView  ci  servirà  affinchè  l’utente,  dopo  aver  cliccato  su  un  task  e    visualizzato  la  scheda  de8aglio  (push)  potrà  tornare  indietro  tramite  il  pulsante  BACK  (pop).

Page 67: Sencha touch: Sviluppare un'app - 4° parte

Aggiungere  una  Navigation  View  al  nostro  proge8o

•  Cerchiamo  dalla  Toolbox  il  componente  Navigation  Vie”  e  trasciniamolo  sul  Project  Inspector

•  Assegniamo  il  componente  TaskList  all’interno  di  MyNavigationView

Page 68: Sencha touch: Sviluppare un'app - 4° parte

Configuriamo  la  NavigationBar

Page 69: Sencha touch: Sviluppare un'app - 4° parte

Configuriamo  la  NavigationBar:  il  Titolo

•  Per  far  apparire  il  titolo  sulla  NavigatoBar  in  base  alla  View  corrente,  bisogna  assegnare,alla  view,    il  valore  della  proprietà  title.

Page 70: Sencha touch: Sviluppare un'app - 4° parte

OVERRIDE

Page 71: Sencha touch: Sviluppare un'app - 4° parte

COME  SALVARE  UN  TASK  ?

Page 72: Sencha touch: Sviluppare un'app - 4° parte
Page 73: Sencha touch: Sviluppare un'app - 4° parte

CREARE  IL  PULSANTE  CHE  APRIRA’  LA  FORM  

Page 74: Sencha touch: Sviluppare un'app - 4° parte

CREARE  LA  FORM

Page 75: Sencha touch: Sviluppare un'app - 4° parte

CATTURARE  L’EVENTO  TAP  PER  APRIRE  LA  FORM

Page 76: Sencha touch: Sviluppare un'app - 4° parte

CATTURARE  L’EVENTO  TAP  E  SALVARE  IL  TASK  NELLO  STORE

Page 77: Sencha touch: Sviluppare un'app - 4° parte

  BUTTON

h8p://docs.sencha.com/touch/2.3.1/#!/api/Ext.Bu8on  

Ext.Bu8on xtype:  bu8on

Page 78: Sencha touch: Sviluppare un'app - 4° parte

Abilitare  la  navigationBar •  Per  far  aggiungere  il  pulsante  ADD  sulla  Navigation  View  

dobbiamo  abilitare  la  navigationBar

Page 79: Sencha touch: Sviluppare un'app - 4° parte

AGGIUNGERE  il  pulsante  ADD •  Cerchiamo  sulla  ToolBox  il  

componente  Bu1on  e  trasciniamolo  sulla  navigationBar.

Page 80: Sencha touch: Sviluppare un'app - 4° parte

Bu8on  ADD:  Allineamento •  Per  allineare  il  pulsante  sulla  destra  facciamo  click  con  il  

mouse  sul  pulsante  e  cambiamo  il  valore  della  proprietà  align  su  “right”.

Page 81: Sencha touch: Sviluppare un'app - 4° parte

FORM  PANEL h8p://docs.sencha.com/touch/2.3.1/#!/api/Ext.form.Panel  

Ext.form.Panel xtype:  formpanel

h8p://docs-­‐‑origin.sencha.com/touch/2.3.0/#!/guide/forms  

Page 82: Sencha touch: Sviluppare un'app - 4° parte

FORM  PANEL •  Il  Form  panel  rappresenta  un  insieme  di  campi,  de8i  anche  fields.  

•  Fornisce  una  serie  di  metodi  che  perme8ono  il  recupero  e  il  salvataggio  dei  dati.

Page 83: Sencha touch: Sviluppare un'app - 4° parte

FORM  PANEL:  FIELD  SET •  All’interno  di  una  form  possiamo  inserire  più  “gruppi”  di  

campi.  

•  Un  gruppo  di  campi  è  rappresentato  dal  componente  “FIELDSET”.  

•  La  particolarità  del  FieldSet  e  che  possiamo  impostare  un  titolo  generale  (title)  e  una  label  subito  so8o  i  campi  (instructions)  

Page 84: Sencha touch: Sviluppare un'app - 4° parte

FORM  PANEL  in  S.T.

•  Istanziamo  la  classe  

Page 85: Sencha touch: Sviluppare un'app - 4° parte

FORM  PANEL  in  S.T.

•  Definiamo    un  component  fieldset  che  raggruppa  i  campi  della  form

Page 86: Sencha touch: Sviluppare un'app - 4° parte

FORM  PANEL  in  S.T.

•  Possiamo  avere  diverse  tipologie  di  campi  da  inserire  nella  form: •  textfield •  emailfield •  passwordfield •  e  tanti  altri  (leggere  la  doc)

Page 87: Sencha touch: Sviluppare un'app - 4° parte

FIELD

•  All’interno  della  form  possiamo  definire  diversi  tipologie  di  field

h8p://docs-­‐‑origin.sencha.com/touch/2.3.1/#!/api/Ext.field.Field  

Page 88: Sencha touch: Sviluppare un'app - 4° parte

Creare  una  FORM  in   SENCHA  ARCHITECT

Page 89: Sencha touch: Sviluppare un'app - 4° parte

Creare  una  FORM  in  S.A. •  Aggiungiamo  un  componente  FORM  PANEL    nel  nostro  

proge8o  e  rinominiamolo  in  TaskForm  (userclassname  e  id)

Page 90: Sencha touch: Sviluppare un'app - 4° parte

Aggiungiamo  i  CAMPI  nella  form

1.  Aggiungiamo  all’interno  della  form  un  componente  fieldset.

2.  All’interno  del  fieldset  aggiungiamo  i  seguenti  “field”: •  name  (textfield) •  description  (textfield) •  priority  (selectfield)

Page 91: Sencha touch: Sviluppare un'app - 4° parte

risultato

Page 92: Sencha touch: Sviluppare un'app - 4° parte

Aggiungiamo  i  CAMPI  nella  form

•  Ogni  field    all’interno  della  form  è  accompagnato  da  una  label  e  dal  campo  input.  

•  Per  ogni  field •  se8iamo  il  corrispe8ivo  nome  nella  proprietà  “name”

•  definiamo  la  larghezza  della  label  a  40%  (widthlabel)

Page 93: Sencha touch: Sviluppare un'app - 4° parte

Configuriamo  il  campo  Priority  (SelectField)

h8p://docs.sencha.com/touch/2.3.1/#!/api/Ext.field.Select-­‐‑cfg-­‐‑options  

Page 94: Sencha touch: Sviluppare un'app - 4° parte

Field  Priority  (selectedField) •  priority  è  un  campo  di  tipo  select,  ovvero  l’utente  deve  poter  

selezionare  il  suo  valore  da  una  lista  di  valori  predefiniti.

•  Per  se8are  l’elenco  dei  valori  bisogna  configurare  la  proprietà  “options”  e  definire  un  array.  

h8p://docs.sencha.com/touch/2.3.1/#!/api/Ext.field.Select-­‐‑cfg-­‐‑options  

Page 95: Sencha touch: Sviluppare un'app - 4° parte

Field  Priority  (selectedField) •  Ogni  record  presente  nell’array  options  deve  avere  2  campi:

•  text:  è  il  valore  testuale  che  l’utente  vedrà  nella  select •  value:  è  il  valore  che  viene  inviato  dalla  form  quando  l’utente  

seleziona  la  voce  corrispondente.

h8p://docs.sencha.com/touch/2.3.1/#!/api/Ext.field.Select-­‐‑cfg-­‐‑options  

Page 96: Sencha touch: Sviluppare un'app - 4° parte

ALIAS •  Per  istanziare  una  classe  invece  di  utilizzare  il  suo  nome  completo  possiamo  far  uso  di  un  alias  (nomigliolo).

Page 97: Sencha touch: Sviluppare un'app - 4° parte

ALIAS:  esempio associamo  un  alias  alla  classe  TaskFormEdit  dal  config:

Da  questo  in  momento  poi  possiamo  istanziare  la  classe  usando  l’alias  :  widget.TaskFormEdit

Tu1i  gli  alias  che  definiamo  per  le  classi  view  finiscono  so1o  il  namespace  “widget.*”

Page 98: Sencha touch: Sviluppare un'app - 4° parte

Generare  id  univoci Quando  salviamo  il  task  model  nello  storage  nella  console  del  browser  può  uscire  questo  warning:

Your  identifier  generation  strategy  for  the  model  does  not  ensure  unique  id'ʹs.  Please  use  the  UUID  strategy,  or  implement  your  own  identifier  strategy  with  the  flag  isUnique.  

Di  default  sencha  utilizza  un  generatore  di  id  semplificato  che  potrebbe  però  portare  a  dei  confli8i  quando  si  memorizzano  molti  dati.   Per  eliminare  il  problema  dobbiamo  usare  un  altro  sistema  generatore  di  id  chiamato:  uuid.

Page 99: Sencha touch: Sviluppare un'app - 4° parte

Configurare  il  generatore  di  id

Impostiamo  in  type  il  valore  “uuid”

1

2