AngularJS-native version of Select2 and Selectize.
- Search and select
- Available themes: Bootstrap, Select2 and Selectize
- Keyboard support
- jQuery not required (except for old browsers)
- Small code base: 400 lines of JavaScript vs 20 KB for select2.min.js
For the roadmap, check issue #3 and the Wiki page.
Starting from Internet Explorer 8 and Firefox 3.6 included.
Installation using Bower
Check the examples.
bower install angular-ui-select
- Inside your HTML add
- select.js:
<script src="bower_components/ui-select/dist/select.js"></script>
- select.css:
<link rel="stylesheet" href="bower_components/ui-select/dist/select.css">
- select.js:
If you already use Bootstrap, this theme will save you a lot of CSS code compared to the Select2 and Selectize themes.
Bower:
bower install bootstrap
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css">
- Or the LESS version:
@import "bower_components/bootstrap/less/bootstrap.less";
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.css">
Configuration:
app.config(function(uiSelectConfig) {
uiSelectConfig.theme = 'bootstrap';
});
Bower:
bower install select2#~3.4.5
<link rel="stylesheet" href="bower_components/select2/select2.css">
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/select2/3.4.5/select2.css">
Configuration:
app.config(function(uiSelectConfig) {
uiSelectConfig.theme = 'select2';
});
Bower:
bower install selectize#~0.8.5
<link rel="stylesheet" href="bower_components/selectize/dist/css/selectize.default.css">
- Or the LESS version:
@import "bower_components/selectize/dist/less/selectize.default.less";
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.8.5/css/selectize.default.css">
Configuration:
app.config(function(uiSelectConfig) {
uiSelectConfig.theme = 'selectize';
});
You cannot write:
<ui-select ng-model="item"> <!-- Wrong -->
[...]
</ui-select>
You need to write:
<ui-select ng-model="item.selected"> <!-- Correct -->
[...]
</ui-select>
Or:
<ui-select ng-model="$parent.item"> <!-- Hack -->
[...]
</ui-select>
For more explanations, check ui-select #18 and angular.js #6199.
You need to use module ngSanitize (recommended) or $sce:
$scope.trustAsHtml = function(value) {
return $sce.trustAsHtml(value);
};
<div ng-bind-html="trustAsHtml((item | highlight: $select.search))"></div>
You are using ng-bind-html with a number:
<div ng-bind-html="person.age | highlight: $select.search"></div>
You should write instead:
<div ng-bind-html="''+person.age | highlight: $select.search"></div>
Or:
<div ng-bind-html="person.age.toString() | highlight: $select.search"></div>
Install Node.js, then inside a console:
npm update # Installs all Grunt dependencies (package.json) inside node_modules directory
bower update # Installs all ui-select dependencies (bower.json) inside bower_components directory
To run the tests:
grunt build # Builds dist/select.js
grunt test # Launches Karma
- Run the tests
- Try the examples
When issuing a pull request, please exclude changes from the "dist" folder to avoid merge conflicts.