1

Underscore.js デバウンスを使用してサイトの別のタブにジャンプするときに clearInterval を実行する必要がないように、setInterval タスクを書き直しています。

エラーが発生し続けます_.debounce is not a function

これは、以下の私の元の作業コードです。基本的には、タブが「pano」のとき、50msごとにカメラの角度を変えるこの機能を実行します。「パノラマ」タブを再度クリックすると、clearInterval によってタイマーがリセットされます。

clearInterval(timerID);
if (target == 'pano') {
   initialize();
   timerID = setInterval(function(){
     if (!hovering && !moved) {
       panoOptions.pov.heading += .5;      
       panoOptions.pov.heading = wrapAngle(panoOptions.pov.heading);
       panorama.setOptions(panoOptions);
     }
   },50);

  initialize();

} 

コードをリファクタリングして._debounce(http://underscorejs.org/#debounce) 使用しようとすると、エラーが発生し、アプローチが正しい場合はエラーになります。

timerID = _.debounce(function(){
  if (!hovering && !moved) {
    panoOptions.pov.heading += .5;      
    panoOptions.pov.heading = wrapAngle(panoOptions.pov.heading);
    panorama.setOptions(panoOptions);
  }
},50);

$("#pano_toggle").click(
  function(){
    console.log("CLICKED");
    timerID();
  }
);

基本的にクリック リスナーを設定して、ユーザーがボタンをクリックするとデバウンス機能が実行されるようにします。また、クリック リスナーが機能しているかどうかを確認するために追加console.log("CLICKED")しましたが、クリックを拾っていません。

私のロジックが失敗している場所に関するヒントはありますか?

編集:

Underscore.js が必要であることを確認しました。

require(["require", 
         "jquery", 
         "underscore",
         "lib/jquery/jquery.galleria",
         "gmaps!",
         "//assets.pinterest.com/js/pinit.js",
         "twitter_bootstrap/bootstrap-dropdown"], function(require, _){
4

1 に答える 1

3

必要な構文が正しくありません。モジュールは、最初の配列にリストされた順序で引数として関数に渡されます。したがって、次のようになります。

require([
     "require", 
     "jquery", 
     "underscore",
     "lib/jquery/jquery.galleria",
     "gmaps!",
     "//assets.pinterest.com/js/pinit.js",
     "twitter_bootstrap/bootstrap-dropdown"
], function(require, $, _, galleria, ...){
     /* .... */
});

ただし、 require自体を require する必要はありません。

于 2012-10-23T20:55:56.800 に答える