Il mio codice ha funzionato in Angular 1.2, ma non funziona in 1.3 e non riesco a capire cosa è cambiato in angolare e cosa dovrei cambiare nel mio codice per risolverlo.Cosa è cambiato in 1.3 angolare che ha rotto il mio codice?
Ho impostato un plunkr example.
Il codice HTML è semplicemente
{{ 'guy' | change }}
il codice JavaScript è:
angular.module('app').service('MyService', function($timeout){
var data = null;
$timeout(function(){
data = 'this is data';
},2000);
this.transform = function(){
return data;
}
});
angular.module('app').filter('change', function(MyService){
return function(input){
return MyService.transform();
}
});
L'idea è che il risultato del filtro dipende una risposta asincrona.
In Angular 1.2, la visualizzazione è stata aggiornata di conseguenza. In Angular 1.3 non è così.
Per alternare tra 1,2 angolare e 1,3 angolare, è necessario modificare il percorso in direzione angolare nella parte superiore del file HTML. tra
<script data-require="[email protected]" data-semver="1.3.0" src="//code.angularjs.org/1.3.0/angular.js"></script>
e questo
<script data-require="[email protected]" data-semver="1.2.0" src="//code.angularjs.org/1.2.0/angular.js"></script>
Ho anche provato 1.3.1 - stesso problema.
Questa è una supposizione, ma il '$ watch' potrebbe essere stato precedentemente sull'intera espressione' 'ragazzo' | cambiare! e ora per motivi di efficienza è solo su "ragazzo", che ovviamente non sta cambiando. Perché stai usando un filtro per questo comunque? Non puoi semplicemente fare '{{asyncData || 'guy'}} 'e poi rimani nel controller' $ timeout (function() {$ scope.asyncData = 'newdata';}, 2000); ' – jdotjdot