繁体   English   中英

如何将对象传递给angularjs中的指令?

[英]How to pass object to a directive in angularjs?

我有一个可调整大小的指令附加的小部件,我在该指令内放置了一个高图,想要在调整容器大小时调整图表大小。 它运作良好,但是当我对不同的图表使用相同的指令时,我需要在指令内传递小部件ID。

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" 

      }); 
    } 
  }; 
});

标识符将您的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;
...
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM