Skip to content

Commit

Permalink
Exposes select2 instance via .data('select2')
Browse files Browse the repository at this point in the history
  • Loading branch information
Nadeem Afana committed Nov 19, 2017
1 parent 077c6e5 commit b6cb959
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/js/select2/core.js
Expand Up @@ -84,6 +84,9 @@ define([
this._syncAttributes();

Utils.StoreData($element[0], 'select2', this);

// Ensure backwards compatibility with $element.data('select2').
$element.data('select2', this);
};

Utils.Extend(Select2, Utils.Observable);
Expand Down Expand Up @@ -578,6 +581,7 @@ define([
this.$element.removeClass('select2-hidden-accessible');
this.$element.attr('aria-hidden', 'false');
Utils.RemoveData(this.$element[0]);
this.$element.removeData('select2');

this.dataAdapter.destroy();
this.selection.destroy();
Expand Down
36 changes: 36 additions & 0 deletions tests/integration/jquery-calls.js
@@ -1,5 +1,7 @@
module('select2(val)');

var Utils = require('select2/utils');

test('multiple elements with arguments works', function (assert) {
var $ = require('jquery');
require('jquery.select2');
Expand Down Expand Up @@ -56,4 +58,38 @@ test('initializes when jQuery $.data contains' +
'3',
'The option value should be pulled correctly'
);
});

test('$element.data returns instance and options correctly',
function (assert) {
var $ = require('jquery');
require('jquery.select2');

var $select = $(
'<select>' +
'<option value="1">One</option>' +
'<option value="2">Two</option>' +
'<option value="3" selected>Three</option>' +
'</select>'
);

// Initialize.
$select.select2({maximumSelectionLength: 2, multiple: true});

assert.equal(
$select.val(),
'3',
'Only 1 option should be pulled.'
);

// Try to resolve instance via .data('select2').
var $instance = $select.data('select2');
assert.ok($instance);
assert.ok($instance.options);

// Ensure $select.data('select2') is the same instance created by .select2()
assert.equal($instance, Utils.GetData($instance.$element[0], 'select2'));

// Ensure initialized property matches.
assert.equal($instance.options.options.maximumSelectionLength, 2);
});

0 comments on commit b6cb959

Please sign in to comment.