Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Cos'è la bolla dell'IA e perché se ne parla
Cos'è la bolla dell'IA e perché se ne parla
Si parla molto ultimamente di "bolla dell'intelligenza artificiale", ma non è sempre chiaro perché: l'IA è una tecnologia molto promettente e che ha già cambiato molte cose dentro e fuori le aziende, ma ci sono enormi aspettative che stanno gonfiando a dismisura i valori delle azioni e distorcendo il mercato. Il che, com'è facile intuire, può portare a una ripetizione della "bolla dotcom", e forse anche di quella dei mutui subprime. Vediamo perché
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-09-2016, 21:24   #1
microinfo
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 328
get status rest angularjs

services.factory('UsersFactory', function ($resource) {
return $resource('url/users', {}, {
query: { method: 'GET', isArray: true }
})
});
app.controller('UserCreationCtrl', ['$scope', 'UsersFactory', '$location',
function ($scope, UsersFactory, $location) {

$scope.createNewUser = function () {
UsersFactory.create($scope.user);
}
}]);

Tramite un servizio rest mi scarico la lista di utenti in formato json e la stampo a video. Vorrei sapere come posso recuperare lo status di risposta della richiesta per sapere se è andata a buon fine o meno. Ho creato un json con campo stato (0 o 1) e descrizione.
Grazie
microinfo è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2016, 21:49   #2
71106
Bannato
 
Iscritto dal: Nov 2014
Messaggi: 292
Secondo me $resource introduce piu' difficolta' che altro, con $http hai una Promise e quindi e' facilissimo:

Codice:
$http.get('url').then(function (response) {
  // OK, i dati sono in response.data
}).catch(function () {
  // errore
});
71106 è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2016, 21:51   #3
71106
Bannato
 
Iscritto dal: Nov 2014
Messaggi: 292
Inoltre ti consiglio di eliminare il campo di status dal formato JSON, e' un antipattern. Se il server deve restituire un errore faglielo restituire tramite HTTP status, altrimenti restituisci direttamente i dati JSON.

Tieni presente che un file JSON non deve necessariamente essere un oggetto. Array, numeri, stringhe, e altri valori semplici sono di per se' valori JSON validi.
71106 è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2016, 22:16   #4
microinfo
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 328
quindi in pratica come dovrei modificare il mio service senza stravolgere il codice?
per il codice di errore non ho capito bene come fare, io dovrei caricare una tabella con il json ricevuto, se c'è un errore avrei pensato di lanciare un alert con l'errore...
microinfo è offline   Rispondi citando il messaggio o parte di esso
Old 07-09-2016, 11:56   #5
71106
Bannato
 
Iscritto dal: Nov 2014
Messaggi: 292
Quote:
Originariamente inviato da microinfo Guarda i messaggi
quindi in pratica come dovrei modificare il mio service senza stravolgere il codice?
Boh.


Quote:
per il codice di errore non ho capito bene come fare, io dovrei caricare una tabella con il json ricevuto, se c'è un errore avrei pensato di lanciare un alert con l'errore...
L'alert va mostrato alla quarta riga del mio snippet di cui sopra:

Codice:
$http.get('url').then(function (response) {
  // OK, i dati sono in response.data
}).catch(function (response) {
  alert(response.statusText);
});
71106 è offline   Rispondi citando il messaggio o parte di esso
Old 07-09-2016, 19:36   #6
microinfo
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 328
ok, volendo testare $http sulla get, ovvero il servizio che mi scarica i dati per popolare la tabella html, cambio da cosi':
(mi sto basando su un esempio preso in rete funzionante)
file controller.js

app.controller('UserListCtrl', ['$scope', 'UsersFactory', '$location',
function ($scope, UsersFactory, $location) {

$scope.users = UsersFactory.query(); //chiama nel service.js il return $resource
}]);

in:


app.controller('UserListCtrl', ['$scope', 'UsersFactory', '$location',
function ($scope, UsersFactory, $location, $http) {

$scope.users = function(){
$http.get('url').then(function (response) {
return response.data; //mi aspetto che nello scope users avrò il json su cui applicare ng-repeat per popolare la tabella
}).catch(function (response) {
alert(response.statusText);
});
}]);

ho provato a cambiare in questo modo, ma la tabella non si carica con i dati e dalla console del browser non vedo errori.
Dove sbaglio?
microinfo è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2016, 01:10   #7
71106
Bannato
 
Iscritto dal: Nov 2014
Messaggi: 292
Prova così:

Codice:
app.controller('UserListCtrl', function ($scope, $http) {
  $http.get('url').then(function (response) {
    $scope.users = response.data;
  }).catch(function (response) {
    alert(response.statusText);
  });
});

Una nota interessante: ciò che da (presumo) inesperto hai cercato di fare, ossia assegnare una Promise a un campo dello scope, non è del tutto aberrato, ma ha un suo senso. Le promise sono ancora una tecnologia giovane, ma in EcmaScript 7 sarà possibile fare cose di questo genere:

Codice:
app.controller('UserListCtrl', function ($scope, $http) {
  try {
    $scope.users = (await $http.get('url')).data;
  } catch (response) {
    alert(response.statusText);
  }
});
Che però sarebbe sconsigliabile per altri motivi (renderebbe sincrono il flusso di esecuzione del costruttore del controller, ergo bloccherebbe il caricamento della pagina finchè la richiesta HTTP non viene conclusa).
71106 è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2016, 09:30   #8
microinfo
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 328
in app.controller però in realtà ho anche altre funzioni, tipo questa:

// callback for ng-click 'createUser':
$scope.createNewUser = function () {
$location.path('/user-creation');
};

in questo codice come l'aggiungo?
app.controller('UserListCtrl', function ($scope, $http) {
$http.get('url').then(function (response) {
$scope.users = response.data;
}).catch(function (response) {
alert(response.statusText);
});
});

devo per forza creare $scope.users = function(){ no?
microinfo è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2016, 13:07   #9
microinfo
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 328
ho risolto, il problema era l'url:
$scope.utenti = function(){
$http({
method: 'GET',
url: 'url'
}).then(function successCallback(response) {
$scope.lista = response.data;
}, function errorCallback(response) {
//alert("errore");
//alert(response.status);
alert(JSON.stringify(response, null, 4));
})
//$scope.lista =MacrosFactory.query();
};


$scope.utenti(); //viene lanciata per caricare la fx

ok, adesso ho alcuni dubbi:
1) e se volessi passare un parametro nell'url, per generare una get filtrata?
ho aggiunto un textbox con pulsante, come posso passarlo alla funzione per accodarlo all'url?
2)nella errorCallback e nella successCallback vorrei visualizzare un alert carino tipo bootstrap alert success e danger, come posso fare? dovrei innescare un div e poi nasconderlo?
microinfo è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2016, 13:25   #10
71106
Bannato
 
Iscritto dal: Nov 2014
Messaggi: 292
Quote:
Originariamente inviato da microinfo Guarda i messaggi
devo per forza creare $scope.users = function(){ no?
No, anzi, non devi crearla. Non insozzare lo scope con elementi che non usi nel markup. Lo scope serve solo a rendere degli elementi visibili alle espressioni interpolate nel markup.



Quote:
Originariamente inviato da microinfo Guarda i messaggi
ho risolto, il problema era l'url: [...]
Questo:

Codice:
$http({
  method: 'GET',
  url: 'url',
})
e' esattamente equivalente a questo:

Codice:
$http.get('url')


Quote:
1) e se volessi passare un parametro nell'url, per generare una get filtrata?
ho aggiunto un textbox con pulsante, come posso passarlo alla funzione per accodarlo all'url?
Qual e' il problema? l'URL e' una stringa, la generi a piacere.

Cosa ti impedisce di fare ad esempio cosi':

Codice:
$http.get('users/' + id)
?



Quote:
2)nella errorCallback e nella successCallback vorrei visualizzare un alert carino tipo bootstrap alert success e danger, come posso fare? dovrei innescare un div e poi nasconderlo?
Non usare i componenti JavaScript di Bootstrap perche' con Angular non funzionano. Usa invece AngularUI Bootstrap.

Qui ci sono gli esempi di come usare le modals: https://angular-ui.github.io/bootstrap/#/modal

E qui gli alert: https://angular-ui.github.io/bootstrap/#/alert
71106 è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2016, 15:25   #11
microinfo
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 328
si ma +id non posso metterlo a mano, volevo sapere come passarglielo a partire dalla form html della pagina...
microinfo è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2016, 17:18   #12
71106
Bannato
 
Iscritto dal: Nov 2014
Messaggi: 292
Quote:
Originariamente inviato da microinfo Guarda i messaggi
si ma +id non posso metterlo a mano, volevo sapere come passarglielo a partire dalla form html della pagina...
Binda il controllo a un campo dello scope tramite ng-model come faresti normalmente. Usa la "dot rule" per evitare problemi.
71106 è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2016, 21:29   #13
microinfo
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 328
umm non so come fare perchè la tabella viene caricata dalla:
$scope.utenti(); (vedi sopra)
quando viene lanciato il controller.
poi nella pagina html carico la tabella con ng-repeat su utenti

per fare come dici dovrei passare un parametro alla fx utenti(codice) ma poi non so come lanciarlo :s
microinfo è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2016, 22:05   #14
71106
Bannato
 
Iscritto dal: Nov 2014
Messaggi: 292
Markup:

Codice:
<form>
  <input type="text" ng-model="id"/>
  <button ng-click="update()">Aggiorna</button>
</form>
<div ng-repeat="user in users track by $index">{{user}}</div>

Controller:

Codice:
app.controller('UserListController', function ($scope, $http) {
  $scope.update = function () {
    delete $scope.users;
    $http.get('users/' + id).then(function (response) {
      $scope.users = response.data;
    });
  };
});
71106 è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2016, 11:44   #15
microinfo
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 328
ok grazie
ancora un altro dubbio, ho messo un pulsantino vicino ogni riga della tabella che al click mi apre una pagina per update della riga.
La pagina viene cambiata con $routeprovider, ma vorrei che i campi della tabella(3) vengano popolati nella finestra di edit.
Come posso riempire i 3 inputbox con i campi della riga selezionata?
Ho pensato che cambiando pagina perdo lo scope è vero?
Forse devo creare le modali?
microinfo è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2016, 12:43   #16
71106
Bannato
 
Iscritto dal: Nov 2014
Messaggi: 292
Il router di Angular cambia l'URL ma non la pagina. Le app in AngularJS sono a pagina singola. Non so come stai implementando il tutto ma non dovresti perdere lo scope.

Mettere l'interfaccia di modifica in una modal di AngularUI e' una cosa che puoi sicuramente fare e non escluse l'uso del router, cioe' puoi fare in modo che il router associ un URL alla modal.

Piccola correzione riguardo al markup del mio post precedente: per gestire il click del bottone ho usato ng-click su un elemento <button>, ma in realta' e' molto meglio usare ng-submit sulla form, cosi':

Codice:
<form ng-submit="update()">
  <input type="text" ng-model="id"/>
  <input type="submit" value="Aggiorna"/>
</form>
71106 è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2016, 13:15   #17
microinfo
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 328
si infatti al centro della pagina principale apro la griglia con la tabella, poi cliccando sul pulsante della riga, apro al posto della pagina con la griglia, la pagina di updata.

adesso come faccio a popolare i capi tipo :
<input type="text" style="min-width: 100%" class="form-control" id="inputCodice" placeholder="Inserisci il codice (Obbligatorio)" ng-model="macro.macro_entity_code"/>


con il codice della righa che ho cliccato?
e il riferimento alla specifica riga come lo prendo?
microinfo è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2016, 13:21   #18
71106
Bannato
 
Iscritto dal: Nov 2014
Messaggi: 292
Il metodo open delle modal (vedi documentazione) ti permette di specificare un oggetto di opzioni e tra le varie opzioni e' possibile specificare uno scope. Specifica lo scope associato alla riga della tabella e assicurati che contenga un qualche riferimento ai dati della riga cliccata.
71106 è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2016, 15:11   #19
microinfo
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 328
per quanti riguarda l'utilizzo delle modali, ho creato:
$scope.openEditModal = function() {
alert("entro il modal");
var modalInstance = $modal.open({
templateUrl: 'pag/upd_record_utente.html',
//controller: 'UserListCtrl',
resolve: {
items: function () {
return $scope.items;
}
}
})
};

ma quando la chiama con ng-click=openEditModal() mi dice che open non è definito, per quale motivo?

Altrimenti trono ad usare il routeprovider e cambiare pagina, ma resta da capire come portarsi lo scope da caricare nella pagina
microinfo è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2016, 15:20   #20
71106
Bannato
 
Iscritto dal: Nov 2014
Messaggi: 292
Cos'e' "$modal"?

Il metodo e' presente nel servizio $uibModal che devi iniettare tramite dependency injection. Qua c'e' il Plunker dell'esempio riportato dalla documentazione: https://plnkr.co/edit/NeX82nSM84n3VH6jPlvr?p=preview

$uibModal e' iniettato alla seconda riga di example.js.
71106 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
Cloud sovrano: l'approccio di Broadcom c...
HONOR conferma l'arrivo in Italia di Mag...
La Cina sotto pressione impone maniglie ...
OpenAI integra le app in ChatGPT per tra...
NVIDIA sarebbe pronta a tagliare la prod...
Prezzo minimo storico per iPhone 16 Pro:...
Riot Games scopre una falla nei BIOS che...
Beats in super offerta su Amazon: aurico...
Batterie elettriche, Samsung SDI e Stell...
Clivet presenta Fullness, la pompa di ca...
SpaceX lancerà 167 razzi spaziali...
Yakuza Kiwami 3 e Dark Ties protagonisti...
Privacy a rischio: ecco la VPN che regis...
SpaceX ha annunciato che un satellite St...
ASUSTOR presenta i nuovi NAS Lockerstor ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:30.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v