Su quale browser si verifica il problema?
Un similar question è stato chiesto qualche tempo fa, che ha concluso che si potrebbe avere a che fare con Chrome V43.
Alcune risorse relative alla questione:
Presumibilmente, Chrome V43 fa Non come la seguente nel angular.copy
source:
var emptyObject = Object.create(Object.getPrototypeOf(source));
Si potrebbe provare una delle seguenti per vedere se si sopprime i vostri errori (indipendentemente dal browser di scelta):
- Non usare
angular.copy
, evitando gli orologi profondi a la $scope.$watch('', fn, true)
(jsbin) e vai per qualcosa come _.cloneDeep (jsbin) da lodash quando hai bisogno di fare una copia profonda di qualcosa.
- Torna a Chrome v42 (se sei su v43).
- Tornare indietro ad Angular 1.2.28 dove
angular.copy
non chiama la riga sopra. source (jsbin)
Se si vuole guardare in profondità ma evitare angular.copy
, vorrei fare qualcosa di simile (con l'aiuto di lodash.merge):
$scope.$watch(function() {
return _.merge(src, dest);
}, callback);
yet another jsbin
Quello in questo modo non chiameresti angular.copy
e avresti ancora una configurazione di 'deep watch'. Bare a mente, questo è un esempio molto ingenuo e non l'ho testato a fondo, ma penso che potresti farlo funzionare in modo molto simile a un orologio angolare con il minimo sforzo.
Disclaimer:non ho davvero scavato che in profondità in ciò che sta realmente accadendo alla fonte angular.copy
, la e/o Chrome V43 console
.È un po 'un'area grigia, ma con i suggerimenti di cui sopra devo ancora scatenare un'invocazione illegale.
fonte
2015-07-23 09:49:47
Hai provato con $ watch o solo chiamando la copia esplicitamente come nel tuo esempio? Probabilmente si può aggirare il problema fornendo una destinazione da copiare, poiché il problema sembra essere quando tenta di crearne uno internamente usando Object.create (...), anche se personalmente non so come risolvere il problema se si ottiene errore con $ watch quando chiama copia stessa .. – aw04
Penso che il tuo problema non è con la copia ma con l'istanziazione, vedi http://stackoverflow.com/questions/8390855/how-to-instantiate-a-file-object- in-javascript – yvesmancera
Chiamando 'var f = new File ([]," ")' e quindi 'f.name' non produce un errore, quindi continuo a pensare che il problema sia con la copia – Vasaka