2016-08-07 10 views
0

私はこのディレクティブを持っている:変数をディレクティブに渡すにはどうすればよいですか?

app.directive('dropdown', ['$timeout',function ($timeout) { 
    return { 
     require: '^ngModel', 
     restrict: 'E', 
     template: '<div id="dropdownDirective" class="btn-group" dropdown>' + 
     '<button class="btn dropdown-toggle" ng-disabled="ngDisabled" dropdown-toggle>' + 
     '{{ items[ngModel].name }}' + 
     '<span class="caret"></span>' + 
     '</button>' + 
     '<ul class="dropdown-menu" role ="menu" aria-label="dLabel">' + 
     '<li ng-repeat="item in items">' + 
     '<a href="#" ng-bind="item.name" ng-click="select(item)" ></a >' + 
     '</li>' + 
     '</ul>' + 
     '</div>', 
     scope: { 
      ngModel: '=', // selected item 
      items: '=', // items to select from 
      ngDisabled: '=', 
      ngChange: '&' 
     }, 
     link: function (scope: any, element, attrs, ngModelCtlr) { 
      // selection changed handler 
      scope.select = function (item, ngModel) { 
       scope.ngModel = item.id; 
       $timeout(scope.ngChange, 0); 
       ngModelCtlr.$setDirty(); 
      }; 
     } 
    } 
}]); 

私はこのようにそれを呼び出す:

<dropdown ng-model="phs.phrases[row.index].posId" 
      items="phs.phrasePosShortNames"> 
</dropdown> 

私がやりたい何がディレクティブを呼び出し、noButtonBorderと呼ばれるパラメータを渡すことができるようにすることです。次に、そのパラメータが渡された場合、ボタンにnoBorderクラスを追加したいと思います。

+2

ええと。 'scope'で定義された属性と同じ方法ですか? – str

答えて

1
scope: { 
     ngModel: '=', // selected item 
     items: '=', // items to select from 
     ngDisabled: '=', 
     ngChange: '&', 
     noButtonBorder: '=' 
    }, 
link: function (scope: any, element, attrs, ngModelCtlr) { 
     // selection changed handler 
     if(noButtonBorder){ 
     attrs.class="noBorder"; 
     } 
     }; 
関連する問題