2012-10-06 11 views
17

Ich habe eine Direktive, wo ich eine Uhr in das 'existingfiles'-Modell des Richtlinienumfangs eingefügt habe. Wenn das Modell durch den Bereich geändert wird. $ Apply, gibt es keinen Aufruf für den Listener in der Überwachung.

Hier ist die Richtlinie Code, bitte lassen Sie mich wissen, wenn ich hier etwas fehlt bin,

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 
    }; 
    }) 

Hier mein Anruf ist, lassen Sie mich

<div fileupload-plugin ng-model="existingfiles"></div> 

Bitte nach Richtlinie wissen, wie sicher zu machen Dieses Modell wird richtig angesehen

Antwort

40

Problem wurde gelöst, indem 'True' als dritter Parameter von $ Watch Call gegeben wurde. finden Sie hier, die mehr Informationen über die dritten Parameter,

Angular Docs on $rootScope

+0

Wer da Thunk. 3. Paramter: objectEquality (optional) - {boolean =} - Vergleichen Sie das Objekt für die Gleichheit und nicht für die Referenz. –

+6

Oder erinnern Sie sich, den Bereich aufzurufen. $ Digest() nach jeder Änderung im Bereich zu erzwingen Update in Controller – Pencilcheck

+0

löste es für mich, danke! –

Verwandte Themen