Mi piace che AngularJS non richieda e la sintassi speciale per Modelli, ma c'è uno scenario che non riesco a capire. Prendiamo il seguente
miei avvolge Dataservice qualunque sapore di archiviazione dei dati che sto utilizzando:
app.factory('dataService', function() {
var data = 'Foo Bar';
return {
getData: function() {
return data;
}
};
});
ho due controller che sia l'accesso lo stesso pezzo di dati:
app.controller('display', function($scope, dataService) {
$scope.data = dataService.getData();
});
app.controller('editor', function($scope, dataService) {
$scope.data = dataService.getData();
});
Se dunque io hanno due visualizzazioni, una delle quali modifica i dati, perché l'altro aggiornamento non viene eseguito automaticamente?
<div ng-controller="display">
<p>{{data}}</p>
</div>
<div ng-controller="editor">
<input type="text" value="{{data}}"/>
</div>
capisco come questo sta lavorando in qualcosa come Knockout dove sarei costretto a fare i dati di un oggetto osservabile ad eliminazione diretta. Pertanto, qualsiasi modifica in una parte dell'applicazione attiva le sottoscrizioni e aggiorna le visualizzazioni in un'altra. Ma non sono sicuro di come farlo in Angular.
Qualche consiglio?
se 'data' è ambiti oggetto condivideranno riferimento allo stesso oggetto, quando i dati è primitivo, conservano valore indipendentemente – charlietfl
problema non è correlato angolare, è il modo JavaScript funziona http://jsfiddle.net/uGdEc/ – charlietfl
@charlietfl Esattamente. Quando si utilizza un livello modello come ad eliminazione diretta, si creano oggetti per tutto ciò che si intende osservabile. Rimuovi quel livello e non sembra aver senso come le primitive possano essere monitorate (come mostra il tuo violino). – nicholas