2015-01-27 2 views
0

У меня есть виджет, который прикреплен к изменяемой по размеру директиве, у меня есть highchart, размещенный внутри этой директивы, и вы хотите, чтобы эта диаграмма изменялась каждый раз, когда размер контейнера изменяется. Он работает хорошо, но когда я использую ту же директиву для разных диаграмм, мне нужно передать идентификатор виджета внутри директивы.Как передать объект в директиву в angularjs?

HTML:

<div ng-controller="CustomWidgetCtrl" plumb-item class="item" style=" top: 50px; left: 110px; height: 500px; width: 500px; " ng-repeat="widget in dashboard.widgets" ng-style="{ 'left':widget.sizeX, 'top':widget.sizeY }" 
data-identifier="{{widget.id}}" resizeable ng-click="resize(widget) >    
    <div ng-if="widget.type === 'All'" class="box" > 
     <div class="box-header" >     
     <div class="box-header-btns pull-right" style="top:10px" > 
     <a title="Data" ng-click="toggleModal(widget)" class="glyphicon glyphicon-list-alt"></i><a> 
     <a title="settings" ng-click="openSettings(widget)"><i class="glyphicon glyphicon-cog"></i></a> 
     <a title="Remove widget" ng-click="remove(widget)"><i class="glyphicon glyphicon-trash"></i></a> 
     </div> 
     </div> 
      <div ng-controller="highchartCtrl"> 
      <highchart id="widget.id" config="widget.chartConfig" ></highchart> 
        </div> 
     </div>   
    </div> 
</div> 

Директива:

routerApp.directive('resizeable', function() { 
    return { 
    restrict: 'A', 

    link: function(scope, element, attrs) { 
     $(element).resizable({ 
     resize: function(event, ui) {   
      var chart = $('#chart1').highcharts();    
      height = ui.size.height - 100; 
     width = ui.size.width - 40; 
      chart.setSize(width, height, doAnimation = true); 

      jsPlumb.repaint(ui.helper); 
     }, 
     handles: "all" 

     }); 
    } 
    }; 
}); 

ответ

1

identifierchange ваш HTML к следующему

<div ng-controller="CustomWidgetCtrl" plumb-item class="item" style=" top: 50px; left: 110px; height: 500px; width: 500px; " ng-repeat="widget in dashboard.widgets" ng-style="{ 'left':widget.sizeX, 'top':widget.sizeY }" 
    data-identifier="{{widget.id}}" resizeable ng-click="resize(widget) > 
... 
... 

И директивы к следующим

routerApp.directive('resizeable', function() { 
    return { 
    restrict: 'A', 

    link: function(scope, element, attrs) { 
    var widgetId = attrs.identifier; 
... 
... 
+0

Thnanks, он работает, как он работает? – Sajeetharan

+1

attrs - объект, содержащий разрешенное значение всех атрибутов, переданных в директиве. – dhavalcengg

+0

любая идея, как получить образец из этой строки с помощью javascript? "{" text ":" Sample "}" – Sajeetharan

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