Ho una direttiva in cui ho aggiunto un orologio sul modello 'existingfiles' dell'ambito della direttiva. Quando c'è un cambiamento nel modello attraverso l'ambito. $ Apply, non vi è alcuna chiamata a listener in watch.
Ecco il codice direttiva, hanno lasciato gentilmente sapere se mi manca qualcosa qui,
directive('fileuploadPlugin', function() {
var linkFn;
linkFn = function(scope, element, attrs) {
angular.element(element).ready(function() {
jQuery('#fileupload').fileupload({
done: function (e, data) {
scope.$apply(function(scope) {
for(var i=0; i < data.result.filesuploaded.length; i++){
scope.existingfiles.push(data.result.filesuploaded[i]);
};
});
}
});
scope.$watch('existingfiles', function(newValue, oldValue) {
element.imagesLoaded(function() {
scope.$apply(function() {
element.masonry({
itemSelector : '.box'
});
});
});
});
};
return {
templateUrl : 'templates/fileupload_plugin.htm',
restrict : 'A',
scope : {
existingfiles : '=ngModel',
},
link : linkFn
};
})
Ecco la mia chiamata alla direttiva,
<div fileupload-plugin ng-model="existingfiles"></div>
Gentilmente vorrei sapere come assicurarsi quel modello è guardato correttamente
Chi da thunk. 3 ° Parametro: objectEquality (opzionale) - {boolean =} - Confronta oggetto per uguaglianza piuttosto che per riferimento. –
O ricordarsi di chiamare scope. $ Digest() dopo ogni modifica dell'ambito per forzare l'aggiornamento nel controller – Pencilcheck
risolto per me, grazie! –