2012-10-06 27 views
17

tôi có chỉ thị trong đó tôi đã thêm đồng hồ vào mô hình 'existingfiles' của phạm vi chỉ thị. Khi có thay đổi trong mô hình thông qua phạm vi. $ Áp dụng, không có cuộc gọi đến người nghe trong đồng hồ.

Đây là mã chỉ thị, vui lòng cho tôi biết nếu tôi đang thiếu một cái gì đó ở đây,

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

Đây là cuộc gọi của tôi để chỉ thị,

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

Vui lòng cho tôi biết làm thế nào để đảm bảo mô hình đó được xem đúng cách

Trả lời

40

Sự cố đã được giải quyết bằng cách cho 'true' làm thông số thứ ba của $ watch call. Hãy tìm thấy ở đây, càng có nhiều thông tin về thông số thứ ba,

Angular Docs on $rootScope

+0

Ai da thunk. Tham số thứ 3: objectEquality (tùy chọn) - {boolean =} - So sánh đối tượng để bình đẳng hơn là tham chiếu. –

+6

Hoặc nhớ gọi phạm vi. $ Digest() sau mỗi thay đổi trong phạm vi để buộc cập nhật trong bộ điều khiển – Pencilcheck

+0

giải quyết nó cho tôi, cảm ơn bạn! –

Các vấn đề liên quan