我有以下指令:
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和控制器消耗来自每个广播的数据,但在这种情况下,我可能无法从所有组件获取数据,而且我需要来自所有组件的数据。
答案 0 :(得分:0)
您可以将控制器中的值与指令的隔离范围绑定(使用=
符号)。因此,在您的场景中,只需将指令中的值绑定到作用域的属性,您就可以随时访问这些值(例如,ng-click)。
你可以吗?