Мой окончательный вариант:
directive('selector', function() {
return {
restrict: 'A',
replace: true,
//require: '?ngModel',
link: function($scope, element, attributes, controller) {
var options = $scope.$eval(attributes['selector']) || {};
angular.extend(options, {
change: function(event, object) {
element.trigger('change');
}
});
element.selectmenu(options);
element.bind('$destroy', $scope.$watch(attributes.ngModel, handler));
element.bind('$destroy', $scope.$watch(attributes.ngDisabled, handler));
element.bind('refresh-me', refreshMe);
function handler() {
element.selectmenu("refresh");
}
function refreshMe() {
element
.selectmenu("destroy")
.selectmenu(options);
}
}
};
});
<select class="selector"
ng-model="selectedStaff"
ng-options="(staff.surname + ' ' + staff.name) for staff in staffList"
data-selector="{icons: {button: 'ui-icon-list'}}">
$scope.staffList = Staff.query({}, function(){
$(".selector", element).trigger('refresh-me');
}
Не уверен, что в полной мере правильно с точки зрения Angular, но задачу решает.
nerv_, спасибо за помощь и наводки.