从AngularJS中的少量指令中消耗值

时间:2015-12-23 07:26:30

标签: angularjs

我有以下指令:

angular.module('myApp')
  .directive('ngBootstrapSelect', () => ({
     templateUrl: 'components/bootstrap-select/bootstrap-select.html',
     replace: 'true',
     restrict: 'EA',
     scope: {
       value: '=',
       options: '=',
       name: '@'
     },
     link: function(scope, $elem, $attrs) {

       scope.$watch($attrs.ngModel, function (newVal) {
         scope.$evalAsync(function () {
           if (!$attrs.ngOptions || /track by/.test($attrs.ngOptions)) $elem.val(newVal);
           $elem.selectpicker('refresh');
         });
       });

       scope.$on('$destroy', function () {
         scope.$evalAsync(function () {
            $elem.selectpicker('destroy');
         });
       });

     }
   }));

和模板:

<select class="btn-group bootstrap-select bs-select form-control pull-right" ng-model="value" ng-options="option as option for option in options" data-width="250px" data-live-search="true" data-size="8" >
   <option value="">SELECT {{ name | uppercase}}</option>
</select>

我在一个页面上基于该指令创建了一些组件。当用户单击按钮时,如何使用在单个页面上创建的所有组件的值?

我考虑过创建$ broadcast和控制器消耗来自每个广播的数据,但在这种情况下,我可能无法从所有组件获取数据,而且我需要来自所有组件的数据。

1 个答案:

答案 0 :(得分:0)

您可以将控制器中的值与指令的隔离范围绑定(使用=符号)。因此,在您的场景中,只需将指令中的值绑定到作用域的属性,您就可以随时访问这些值(例如,ng-click)。

你可以吗?