タイプエラーウィジェット工場を使用して構築されたjQueryプラグインを使用するジャスミン仕様を実行するとき

StackOverflow https://stackoverflow.com/questions/8399427

質問

私は呼ばれるjQueryプラグインを使用しています ToggleEdit インライン編集用。

コードが実際にページで使用されている場合、すべてが正常に機能します。

ただし、テストスイートは次のエラーで失敗します。

TypeError: Cannot call method 'remove' of undefined

私はそれを追跡して内部からトリガーされます clear この特定のプラグインの方法。そのソースファイルを見つけることができます ここ.

そのコードには2つの関連ビットがあります。

1- _init 関数

self.element.addClass("toggleEdit toggleEdit-edit toggleEdit-edit-" +   
self._tag(self.element))
//store reference to preview element
.data("toggleEdit-preview", self.p);

ご覧のとおり、プラグインが最初にインスタンス化されると、 data 構造 self 新しく作成された要素を保存します。

2- clear 関数

self.element.data("toggleEdit-preview").remove();

clear その後、関数はその構造にアクセスして要素を取得しようとします。それは、ジャスミンの仕様内で、前述の例外で失敗するときです。

誰かが似たようなものを見たことがありますか?

編集:

これは私の仕様です。エラーを再現できる最も単純なコードです。

it("should update the given attribute on the server", function(){
  $('#user-details input, #user-details select').toggleEdit(); //this line triggers the error
});

http://alz.so/static/plugins/toggleedit/jquery.toggleedit.js

役に立ちましたか?

解決 2

私の問題を見つけました:jquery + jquery ui duoの古いバージョン。それらをアップグレードすると、例外が解決します。

他のヒント

私はToggleeDitのソースを見ていましたが、Clearの2倍の2倍の唯一の機能は、self.element.dataが設定される直前です。

if (typeof self.element.data("toggleEdit-preview") !== "undefined") {
     self.clear();
     self.disableEvents();
}

そして、破壊機能で:

destroy: function() {
         var self = this;
         self.clear();
         self.disableEvents();
         $.Widget.prototype.destroy.apply(self, arguments);
       }    

最初の呼び出しが保護されているように見えるので、私はあなたにやや愚かな質問をします:破壊が2回呼ばれる可能性はありますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top