web-dev-qa-db-ja.com

「Select2を使用していない要素でselect2( 'destroy')メソッドが呼び出されました」の処理方法

Ui-select2を使用していて、編集ボタンをクリックして新しいページを開こうとしています。奇妙な問題が発生しています。初めて新しいページを開いたときは正常に開いていますが、キャンセルして同じページをもう一度開いたときに、[編集]をクリックすると、次のエラーが発生します。

select2.full.min.js:3 The select2('destroy') method was called on an element that is not using Select2
angular.js:13708 TypeError: Cannot read property 'destroy' of undefined
at n.a.fn.select2 (select2.full.min.js:3)
at HTMLSelectElement.<anonymous> (select2.js:175)
at HTMLSelectElement.dispatch (jQuery-2.1.4.min.js:3)
at HTMLSelectElement.r.handle (jQuery-2.1.4.min.js:3)
at Object.trigger (jQuery-2.1.4.min.js:3)
at n.triggerHandler (jQuery-2.1.4.min.js:3)
at Function.pa.fn.on.pa.cleanData (angular.js:1865)
at n.remove (jQuery-2.1.4.min.js:3)
at angular.js:5504
at Object.Push (angular.js:5085)

このメッセージを読むと、destroyメソッドを定義する必要があるようですが、コントローラーでdestroyメソッドを定義する方法と、キャンセルボタン(キャンセルメソッド)呼び出しを呼び出す方法がわかりません。selectのコードスニペットは次のとおりです。

<select ui-select2 class="form-control input-lg" ng-model="cityId" ng-change="loadLocality()">
                                <option ng-repeat="city in cities|orderBy:'name'|filter:'ACTIVE':true" value="{{city.id}}">{{city.name}}</option>
                            </select>
7
Madhusudan Sahu

次のようにselect2の簡単なチェックを使用します。

if ($('select').data('select2')) {
   $('select').select2('destroy');
 }

GitHubの問題でコードを見つけました https://github.com/aldeed/meteor-autoform-select2/issues/44

25
Mario Naether

公式ドキュメントから: https://select2.org/programmatic-control/methods#checking-if-the-plugin-is-initialized

選択にクラス '。select2-hidden-accessible'があるかどうかを確認できます。

$("select.select2-hidden-accessible").select2('destroy');
1
Niko