Anuglar-chosen-localytics not working

2.9k views Asked by At

I'm trying to create a selecbox using Angular and Chosen. And i Can't seem to get it to work. I feel like im still uploading the wrong scripts, but don't know how to upload the correct ones. I've installed chosen using bower. First i tried:

<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-chosen-localytics/chosen.js"></script>

angular.module('myApp', ['localytics.directives'])

But then i got an error saying elemnt.chosen is undefined. I read that this happens when you load jquery AFTER loading angular. So I tried:

<script src="bower_components/angular-chosen-localytics/chosen.js"></script>
<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/angular/angular.js"></script>

But this doesn't work because angular is not defined. I found out that i have two seperate bower components, the actual Chosen component and the angular-chosen directives component. So i added the chosen scripts as well:

<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-chosen-localytics/chosen.js"></script>
<script src="bower_components/chosen/chosen.jquery.js"></script>
<script src="bower_components/chosen/chosen.proto.js"></script>
<script src="bower_components/angular-chosen-localytics/chosen.js"></script>

The errors disappeared, but the elements do not work. I get a simple bar with no options and badly formatted text. Does anyone know what i'm doing wrong?

the element that does not work:

<select chosen
  data-placeholder="Pick one of these"
  disable-search="true"
  allow-single-deselect="true">
  <option value=""></option>
  <option>This is fun</option>
  <option>I like Chosen so much</option>
  <option>I also like bunny rabbits</option>
</select>
1

There are 1 answers

3
Rus Paul On BEST ANSWER

EDIT

For me this order worked:

CSS:

<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css">
<link rel="image_src"  href="bower_components/chosen/chosen-sprite.png">
<link rel="stylesheet" href="bower_components/chosen/chosen.css"/>
<link rel="stylesheet" href="styles/chosen-bootstrap.css"/>

Where chosen-bootstrap.css is found here: https://gist.github.com/koenpunt/6424137

Scripts:

<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/chosen/chosen.proto.js"></script>
<script src="bower_components/chosen/chosen.jquery.js"></script>
<script src="bower_components/bootstrap/dist/js/bootstrap.js"></script>

<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-chosen-localytics/chosen.js"></script>

Custom directive for responsiveness:

  return {
      restrict: 'A',
      replace: false,
      transclude: false,
      link: function(scope, element) {
          element.chosen({ width: '100%' });
      }
  };

The module:

var module = this.module('MyModule', ['ngRoute', 'localytics.directives']);

And the element:

 <select class="form-control" chosen multiple responsive-chosen data-placeholder="Select items" ng-model="selectedItems" ng-options="item.Name for item in allItems">
      <option value=""></option>
 </select>