这是我如何处理类似情况的示例...注意 ng-class 在指令中使用,您可能想要使用 ng-checked 但做类似的事情...在我的情况下,我最终有两个按钮起作用作为是否问题的切换:
directive('buttonsRadio', [function()
{
return {
restrict: 'E',
scope: {model: '=', options: '='},
controller: function($scope)
{
$scope.activate = function(option) {
$scope.model = option;
}
},
template: "<div class='btn-group' data-toggle='buttons-radio'><div ng-repeat='option in options track by option.optionId'><button type='button' class='btn' ng-class='{active: option.optionId==model.optionId}' ng-click='activate(option)'>{{option.name}}</button><br></div></div>"
}
}])
需要注意的是,我没有在此处正确设置 ng-model,因此它会更新到外部并适用于我的目的,但可能不正确。有专门关于与我在其他地方使用过的 ng-model 集成的文档,例如:
// view -> model
// bit of jQuery in this case to handle async geocoding results
$(iElement).geocomplete().bind("geocode:result", function(event, result){
ctrl.$setViewValue(result.formatted_address);
console.log(result.formatted_address);
scope.$emit("geocodeResultComplete", result); //use this event to update a google map
});
// model -> view
ctrl.$render = function() {
iElement.val(ctrl.$viewValue);
};
// load init value from DOM
//ctrl.$setViewValue(iElement.val());