320 messaggi dal 12 gennaio 2007
Sto cercando di imparare AngularJs.
Ho implementato il controller e la view.
--------------------------------------------------
var demoapp = angular.module('demoapp', {});
demoapp.controller('ParentCtrl', function ($scope) {
$.getJSON('/api/CurrentUserProfile', function (data) {
$scope.$apply(function () {
$scope.User = data;
});
});

});
---------------------------------------------
<div data-ng-app="demoapp" style="float:right;">
<div data-ng-controller="ParentCtrl">

<div >{{User.UserId}}</div>
<div >{{User.Ordine.AnonymousID}}</div>

<ul>
<li ng-repeat="dett in User.Ordine.OrdineDettaglio">
{{dett.CodArticolo}}
</li>
</ul>
</div>
</div>
--------------------------------------------------
Fino qua tutto funziona,visualizzo i dati senza problemi.
Il problema nasce,quando i dati vengono modificati.
I dati sono modificati dall'esterno del controller.
Avrei bisogno di una funzione che in relezione ad un evento(ad esempio click)che mi aggiorni il binding.
Spero di essermi spiegato

Massimo Sanfelici

Mantova
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
prova a gestire le modifiche nel Controller stesso, non c'è bisogno di modificare dati dall'esterno.

AngularJS ti offre un binding bi-direzionale tra il modello e la UI, puoi fare in modo che quando un utente digita in una casella di testo, quel valore venga automaticamente cambiato anche nel modello.

Ad esempio, usando l'attributo data-ng-model su un campo input tipo questo, il suo valore verrebbe copiato in tempo reale sulla proprietà User.UserId a cui è legato.
<input type="text" data-ng-model="User.UserId" />


Anche nel caso in cui tu debba modificare i dati di un elemento che non esiste ancora nel modello (come un nuovo articolo da inserire nella collezione OrdineDettaglio), puoi comunque fare tutto nel contesto del controller.
A tale scopo, crea un oggetto NuovoArticolo nel controller e lega le sue proprietà ad altrettante caselle di testo. Quando l'utente clicca il bottone "Aggiungi", accoderai quell'oggetto alla collezione OrdineDettaglio. Ecco, qui trovi un esempio di codice:
http://jsfiddle.net/bvYs7/

Se hai necessità particolari puoi anche scegliere di gestire l'editing su un controller separato (da chiamare ad esempio DetailCtrl) e poi metterlo in comunicazione con il ParentCtrl attraverso l'uso di eventi o attraverso un servizio. Qui trovi degli esempi:
http://stackoverflow.com/questions/9293423/can-one-controller-call-another-in-angularjs

Ho risposto alla tua domanda? In caso spiega nel dettaglio la situazione che ti richiede di modificare i dati dall'esterno.

ciao

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.