Ho una fabbrica che sta recuperando i dati da una fonte esterna. Non appena ottengo i dati, utilizzo una seconda fabbrica per filtrarla secondo determinati criteri.
La proprietà di fabbrica è assegnata all'ambito.
Ora, quando faccio questo nella mia fabbrica, che non aggiorna il campo di applicazione:
factory.foo = [{id:1,name:'foo'}]; // doesn't work
Perciò anche il filterin in una seconda fabbrica non funziona
factory.foo = Filter.filter(); // doesn't work
Anche se questo funziona :
factory.foo.push({id:1,name:'foo'}); // works
qualcuno ha un'idea se questo è destinato e perché è in questo modo, e come risolverlo?
app.factory('Foo',function(Filter) {
var factory = {
foo:[],
getDataForFoo:function() {
factory.foo = Filter.filter(); // doesn't work
//factory.foo = [{id:1,name:'foo'},{id:1,name:'foo'}]; // doesn't work
//factory.foo.push({id:1,name:'foo'}); // works
}
};
return factory;
});
app.factory('Filter',function() {
var factory = {
filter:function() {
var arr = [];
arr.push({id:1,name:'foo'});
return arr;
}
}
return factory;
});
app.controller('MainCtrl', function($scope,Foo) {
$scope.test = 'running';
$scope.foo = Foo.foo;
$scope.click = Foo.getDataForFoo;
});
È quello che dice Simon Belanger, si perde il riferimento. Lo spiego qui: http://angular-tips.com/blog/2013/08/consuming-services/ –
Per una spiegazione completa dell'ereditarietà dell'ottica vedi questa risposta http://stackoverflow.com/questions/14049480/what- sono-the-nuances-of-scope-prototypal-prototypical-inheritance-in-angularjs – piatek
@piatek non penso che sia correlato all'ereditarietà dell'ambito, in quanto ho un solo ambito qui. –