2015-01-07 3 views
2

Создайте список виджетов с JSPlumb и AngularJS, мне нужно включить изменение размера с помощью обработчика на каждом виджете. На нем уже есть example, я реализовал, но изменить размер не происходит. вот мой код,Как включить изменение размера в виджет JsPlumb?

HTML:

<div ng-controller="CustomWidgetCtrl" plumb-item class="item" resizeable> 

App.js:

routerApp.directive('resizeable',function($compile){ 
return{ 
    restrict: 'A', 
    link: function(scope, element, attrs){ 
     element.resizeable({ 
     resize : function(event, ui) {    
       jsPlumb.repaint(ui.helper); 
      }, 
      handles: "all" 
     }); 
    } 
}; 

Здесь вы Plunker

выход после внедрения кода pankajparkar в,

enter image description here

Мой фактический виджет:

<div ng-controller="CustomWidgetCtrl" plumb-item class="item" style="margin: 20px; top: 50px; left: 110px; height: 480px; width: 400px; " ng-repeat="widget in dashboard.widgets" ng-style="{ 'left':widget.sizeX, 'top':widget.sizeY }" data-identifier="{{widget.id}}" resizeable > 
+1

создать plunkr. –

+0

@NaeemShaikh Я изменил вопрос с помощью plunker – Sajeetharan

ответ

2

Не нужно перемещать jQuery перед angularjs. Просто оберните элемент внутри $, так что jQuery поймет, что DOM и связать изменяемое событие должным образом. Вместо использования ссылок используйте компиляцию, если вы не зависимы от области действия и Компиляция сравнительно быстрее, чем ссылка.

Директива код.

routerApp.directive('resizeable', function() { 
    return { 
    restrict: 'A', 
    compile: function(element, attrs) {  
     $(element).resizable({ 
     resize: function(event, ui) { 
      jsPlumb.repaint(ui.helper); 
     }, 
     handles: "all" 
     }); 
    } 
    }; 
}); 

Working Plunkr

Надеется, что это будет полезно для вас.

+0

Это то, что я ослабел. Теперь я могу найти обработчик изменения размера с помощью моего виджета, но он не будет изменен. Есть идеи? – Sajeetharan

+0

@Sajeetharan Что не изменяет размер? –

+0

Вы проверили plunkr. div обрабатывается правильно. –

1

Две вещи, кажется, неправильно в вашем коде.

Во-первых, вы используете .resizeable(), но имя функции .resizable().

Во-вторых, вы используете element.resizable(), но element - это объект jqLite. В вашем html вы сначала загружаете AngularJS, затем jQuery; вы должны сначала загрузить jQuery.

Адрес updated plunkr.

+0

круто, но проблема у меня есть, мне нужно сначала загрузить angularJS. есть ли какое-нибудь обходное решение? – Sajeetharan

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