2017-02-06 13 views
0

現在、剣道データソースを剣道のドロップダウンリストでフィルタリングしようとしていますが、予想通りに動作しません。フィルタ剣道データソースの日付範囲

私は剣道DropDownListを持っています。このドロップダウンリストには、ユーザーがDataSourceを1、3、6、9、または12か月間にフィルタリングできるオプションがいくつかあります。私はmoment.jsを使って、現在の日付に月を加算する処理も行っています。ここで

が私のDropDownList onChangeイベントです:

onMonthRangeChange: function (e) { 
    var value = e.sender.value(); 
    switch (value) { 
     case "1": 
      var oneMonth = moment().add(1, "month"); 
      var firstOfMonth = moment().startOf("month"); 
      viewModel.myTaskDataSource.query({ 
       logic: "and", 
       filters: [ 
        { field: "DueDate", operator: "gte", value: firstOfMonth }, 
        { field: "DueDate", operator: "lte", value: oneMonth } 
      }); 
      break; 
     case "3": 
      // similar to above code except for 3 months 
     case "6": 
      // similar to above code except for 6 months 
     case "9": 
      // similar to above code except for 9 months 
     case "12": 
      // similar to above code except for 12 month 
    } 
}) 

私はこれが働くだろうと思ったが、それはしていません。代わりに、DataSourceのすべてが表示されます。私もviewModel.myTaskDataSource.filterからviewModel.myTaskDataSource.queryを変更しようとしたが、その後、私はちょうど次のエラーを取得する:

Uncaught TypeError: e.indexOf is not a function - kendo.all.js:1129

また、私は剣道とmoment.jsが異なる時刻形式それでも剣道日付のすべてを解析した後を使用していたので、多分それはあったと疑わ

瞬間の日付に私は同じエラーを取得します。

答えて

0

多くの実験の後、私は最終的に解決策を見つけることができました!

私はエラーをより詳しく見て、kendo.parseDateについて何か言及していることに気づいたので、フィルタリングの原因となった日付に問題があることは分かっていました。

私のmoment.js日付オブジェクトの末尾にtoDate()を追加するだけで、今はすべて期待どおりに動作します。

私のフィルタリングは今、次のようになります。

onMonthRangeChange: function (e) { 
    var value = e.sender.value(); 
    switch (value) { 
     case "1": 
      var oneMonth = moment().add(1, "month").toDate(); 
      var firstOfMonth = moment().startOf("month").toDate(); 
      viewModel.myTaskDataSource.filter({ 
       logic: "and", 
       filters: [ 
        { field: "DueDate", operator: "gte", value: firstOfMonth }, 
        { field: "DueDate", operator: "lte", value: oneMonth } 
      }); 
      break; 
     case "3": 
      // similar to above code except for 3 months 
     case "6": 
      // similar to above code except for 6 months 
     case "9": 
      // similar to above code except for 9 months 
     case "12": 
      // similar to above code except for 12 month 
    } 
})