インライン編集にはtoggleEditというjQueryプラグインを使用しています。ウィジェット・ファクトリを使用して構築されたjQueryプラグインを使用するジャスミン仕様を実行するとエラーが発生します
コードが実際にページで使用されている場合、すべて正常に動作します。
しかし、私のテストスイートは、次のエラーで失敗します。
TypeError: Cannot call method 'remove' of undefined
私は、この特定のプラグインのclear
メソッド内からトリガされることを突き止め。そのソースファイルはhereです。
そのコードに2つの関連ビットがあります:あなたが見ることができるようにプラグインが最初にそれを保存するためにself
にdata
構造を使用してインスタンス化されるとき
1-、_init
機能
self.element.addClass("toggleEdit toggleEdit-edit toggleEdit-edit-" +
self._tag(self.element))
//store reference to preview element
.data("toggleEdit-preview", self.p);
新しく作成された要素。
2- clear
機能
self.element.data("toggleEdit-preview").remove();
clear
関数は、その構造にアクセスし、要素を取得しよう。ジャスミン仕様の中では、前述の例外が発生して失敗します。
誰も似たような人はいますか?
EDIT:これは私のスペックである
、それがエラーを再現することができ、コードの最も簡単な部分です:
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回呼び出されていません。そして、それが私のバグです。 Destroyは、ウィジェットのファクトリプロトコルに続いてjQueryによって呼び出されますが、呼び出されるときには別の 'this'を参照しているようです。 – leonardoborges