2015-05-08 21 views
9

Tôi đang cố gắng để $watch rộng yếu tố của tôi bên trong một chỉ thị:

appDrct.directive('setWidth', function($interval) { 
    return { 
     require: '?ngModel', 
     link: function($scope, $elm, attr, ngModel) { 

      $scope.$watch($elm.parent().width(), function() { 
       console.log('Width changed'); 
      }); 
     } 
    } 
}) 

Nhưng nó không hoạt động ... Tôi biết một thực tế rằng những thay đổi chiều rộng của tôi (tôi thử với $interval để hiển thị chiều rộng và nó thay đổi)

+0

chiều rộng phần tử của bạn thay đổi như thế nào? –

+0

Tôi sử dụng những điều sau đây: http://codepen.io/Reklino/full/raRaXq/ – ncohen

+0

bạn đang mong đợi chiếc đồng hồ theo dõi những thay đổi trên một giá trị nguyên thủy ... mà không bao giờ thay đổi. Nó sẽ chỉ trả lại một giá trị tại thời điểm mã được chạy. – charlietfl

Trả lời

6

đây là cách bạn làm điều đó, bạn cần phải $watch các biểu hiện chức năng:

$scope.$watch(function() { 
     return $element[0].style.width; 
     }, function(newVal, oldVal) { 
     console.log('Width changed'); 
}); 

Fiddle

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