2016-11-17 6 views
0

クロージャを使用して次のスクリプトで複数の日付ピッカー(ブートストラップ日付ピッカー)を適切に呼び出して初期化し、各日付ごとに機能を複製する必要はないピッカーID?JSクロージャ - コールバックに依存する複数の日付ピッカーの初期化/呼び出し

http://www.daterangepicker.com/は私が渡されたIDを「記憶」するように失敗したクロージャを使用しようとした場所です----私は< cb_helper

を使用していピッカーです...

何私は間違っている?

JS

$(function() { 
    var start = moment().subtract(29, 'days'); 
    var end = moment(); 
    var idVal = ""; 
    function cb(start, end) { 
     $(idVal + ' span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY')); 
    } 



    function cb_helper(id, start, end) 
    { 
     (function(){ 
      idVal = id; 
      cb(start, end); 
     })(); 
    } 

    function init(id){ 
     $(id).daterangepicker({ 
     startDate: start, 
     endDate: end, 
     ranges: { 
      'Today': [moment(), moment()], 
      'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], 
      'Last 7 Days': [moment().subtract(6, 'days'), moment()], 
      'Last 30 Days': [moment().subtract(29, 'days'), moment()], 
      'This Month': [moment().startOf('month'), moment().endOf('month')], 
      'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] 
     } 
     }, cb); 
    } 

    init("#reportrange_profitability"); 
    init("#reportrange_volume"); 
    cb_helper("#reportrange_profitability", start, end); 
    cb_helper("#reportrange_volume", start, end); 
    }); 

答えて

1
$(function() { 
    var start = moment().subtract(29, 'days'); 
    var end = moment(); 


    function cb(idVal) { 
     return function(start, end) { 
      $(idVal + ' span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY')); 
     } 
    } 


    function init(id, start, end) { 
     $(id).daterangepicker({ 
      startDate: start, 
      endDate: end, 
      ranges: { 
       'Today': [moment(), moment()], 
       'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], 
       'Last 7 Days': [moment().subtract(6, 'days'), moment()], 
       'Last 30 Days': [moment().subtract(29, 'days'), moment()], 
       'This Month': [moment().startOf('month'), moment().endOf('month')], 
       'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] 
      } 
     }, cb(id)); 
    } 

    init("#reportrange_profitability", start, end); 
    init("#reportrange_volume", start, end); 
}); 
+0

私はあなたが答えただけのよう囲むCB機能から機能を返却しようとしていた、ありがとうございました。 – Vahe

関連する問題