2016-05-21 4 views
2

Эта директива назначается изображению, и она использует плагин jQuery под названием Cropper. Как я могу получить в HTML или в другом угловом контроллер динамической переменной ширина и высота элемента: e.width или e.heightКак получить доступ к переменной из угловой директивы?

.directive("imgcrop", [function ($scope, $controller) { 
     return { 
      restrict: "A", 
      scope: { 
      proposal : "=" 
      }, 
      transclude: true, 
      replace: true, 
      link : function ($scope, $el, $attr) { 
       $attr.$observe("src", function (src) { 
          jQuery('#cropImage').cropper('destroy'); 
          jQuery('#cropImage').cropper({ 
           viewMode  : 0, 
           zoomable  : false, 
           preview: ".extra-preview", 
           dragMode  : 'crop', 
           guides   : true, 
           highlight  : true, 
           cropBoxMovable : true, 
           cropBoxResizable: true, 
           crop   : function (e) { 
            // Output the result data for cropping image. 
            console.log(e.width); 
            console.log(e.height); 
            } 
          }); 

       }); 
      } 
     } 
    } ]); 

ответ

0

Setup область применения привязки, которые вы можете использовать, чтобы передать ширину и высоту назад к контроллеру.

.directive("imgcrop", [function ($scope, $controller) { 
      return { 
       restrict: "A", 
       scope: { 
       proposal : "=" 
       , croppedWidth: '=' 
       , croppedHeight: '=' 
       }, 
       transclude: true, 
       replace: true, 
       link : function ($scope, $el, $attr) { 
        $attr.$observe("src", function (src) { 
         jQuery('#cropImage').cropper('destroy'); 
         jQuery('#cropImage').cropper({ 
          viewMode  : 0, 
          zoomable  : false, 
          preview: ".extra-preview", 
          dragMode  : 'crop', 
          guides   : true, 
          highlight  : true, 
          cropBoxMovable : true, 
          cropBoxResizable: true, 
          crop   : function (e) { 
           // Output the result data for cropping image. 
           $scope.croppedWidth = e.width; 
           $scope.croppedHeight = e.height; 
          } 
         }); 
        }); 
       } 
      } 
    } ]); 

Тогда на изображении:

<img imgcrop croppedWidth="vm.width" croppedHeight="vm.height"> 
+0

Спасибо вам Kicken, но как я могу отобразить его в образе или добавляя его в другой контроллер? что такое vm.width? –

+0

'vm.width' и' vm.height' - ссылки на свойства в области контроллера. Директива присваивает ширине и высоте любому свойству scope, которое вы там указываете. – kicken

+0

Я довольно новичок в угловых директивах, но почему-то понимаю вашу технику. Единственная проблема для меня в том, что я не знаю, как отображать их в HTML? Это самая простая причина, по которой я хочу использовать эти свойства. –

Смежные вопросы