私はAngularJSにかなり慣れていません...真夜中から現在の秒数を取り、それをデータオブジェクトのopen
/時間の値と比較するカスタムフィルターを作成しました。closed
それはうまく機能し、モデル内の店舗が開いているかどうかを教えてくれます。
ただし、店舗が開いているか閉じているかに基づいて、ユーザーがデータを並べ替えられるようにしたいと考えています。いくつかの入力チェックボックスを使用して、他の種類のデータをフィルタリングしました。次に例を示します。
<input type="checkbox" ng-model="query.has_parking" ng-true-value="true" ng-false-value="" > Has Parking
これにより、ユーザーは駐車場のある店舗をフィルタリングできます。
入ってくるデータには、次のような構造の時間があります。
{
sunday_open: 720,
sunday_close: 1020,
monday_open: 600,
monday_close: 1320,
tuesday_open: 600,
tuesday_close: 1320,
wednesday_open: 600,
wednesday_close: 1320,
thursday_open: 600,
thursday_close: 1320,
friday_open: 600,
friday_close: 1320,
saturday_open: 600,
saturday_close: 1320
}
したがって、私のフィルターは現在の日を見つけて、それを提供された値と比較し、Open または Closed を返します。
.filter('is_open', function() {
return function(data) {
var currentDay = new Date().getDay();
var currentMSM = (new Date().getHours() * 60) + (new Date().getMinutes());
var open, close;
switch(currentDay)
{
case 0:
open = data.sunday_open;
close = data.sunday_close;
break;
case 1:
open = data.monday_open;
close = data.monday_close;
break;
case 2:
open = data.tuesday_open;
close = data.tuesday_close;
break;
case 3:
open = data.wednesday_open;
close = data.wednesday_close;
break;
case 4:
open = data.thursday_open;
close = data.thursday_close;
break;
case 5:
open = data.friday_open;
close = data.friday_close;
break;
case 6:
open = data.saturday_open;
close = data.saturday_close;
break;
}
// so now I have the open and close time of today at the specified store
// compare it to the current seconds since midnight on the client
return (currentMSM > open && currentMSM < close) ? "Open" : "Closed";
};
})
しかし、チェックボックスの入力に同じ値を使用して、ユーザーが開いている店舗と閉じた店舗を並べ替えられるようにしたいのですが、正直なところ、どこから始めればよいかさえわかりません。
でフィルターを使用できないことはわかっていますng-model
。どんな助けでも大歓迎です。