2012-02-29 14 views
0

このハンドラは、eval関数の$ pageパラメータが嫌いです。要素リストの後に "missing"というエラーが表示されます。jquerymobile eval with object parameter missing]要素リストの後

$('div[data-role="page"]').live('pageinit pagebeforeshow pageshow pagebeforehide pagehide', function (event, ui) { 
    var $page = $(this); 
    var type = event.type.replace('page', 'Page').replace('init', 'Init').replace('before', 'Before').replace('show', 'Show').replace('hide', 'Hide'); 
    eval('Controller.Method.' + type + '(' + $page + ')'); 
}); 

答えて

1

あなたはそれがjQueryオブジェクトなので、非常に機能していない文字列の一部であることを$pageを強制しています。文字列は[object Object]になります。これは、jQueryオブジェクトの文字列表現が優れていないためです。

これはまさにを避けてevalを使用するケースです。これはうまくいくはずで、きれいで安全です。

Controller.Method[type]($page); 
+0

うわー!正方形の括弧を使うことができたことは、決して知らなかった。私はそれについてもっと学びたいと思っています – Baconbeastnz

+0

@Baconbeastnz:それは本当に素晴らしいものです。 'a.b'は' a ['b'] 'と同じです - 後者では、(a [variable]のような)変数を代わりに使うこともできます。これは最初の方法では不可能です。 – pimvdb

+0

、ありがとう! – Baconbeastnz

関連する問題