我有一個表單需要對其進行某些驗證。我有兩個下拉菜單,顯示相同的數據(在這種情況下,與到期日的促銷代碼)..基於截止日期的角度陣列刪除
所以我的第一個下拉列表是爲促銷代碼:
<div class="input-group col-sm-12 col-md-12 col-lg-12">
<span style="min-width: 150px;" class="input-group-addon promo-select">Select Promo Code</span>
<select id="offer_promo" name="offer_promo" class="form-control" ng-change="promoAction()"
ng-model="promo"
ng-options="p.Promo_ID as p.Promo_Code + ' (' + p.Promo_Description + ')' for p in promos">
<option value="">Please Select A Promotion</option>
</select>
</div>
所以我的第二個下拉是這其他促銷代碼:
<div data-ng-show="(offer.is_primary === 1)" class="input-group col-sm-12 col-md-12 col-lg-12">
<span class="input-group-addon">Additional Code</span>
<select ng-disabled="additionalCodeDisabled" id="offer_promo_add" name="offer_promo_add" class="form-control" ng-model="addPromo"
ng-options="p.Promo_Code as p.Promo_Code + ' (' + p.Promo_Description + ')' for p in addPromos"></select>
</div>
這裏是我promoAction內調用我的過濾器:
$scope.promoFilter = function() {
function promosFilteredBy(date) {
var filteredPromos = $scope.addPromos.filter(function(addPromos) {
console.log(filteredPromos);
var promoDate = new Date($scope.promo_expiration);
return promoDate < date;
});
return filteredPromos;
}
var selectedPromoDate = new Date($scope.promo_expiration);
$scope.addPromos = promosFilteredBy(selectedPromoDate);
};
在我的控制器中,我得到一個空數組或未定義的filteredPromos。所以過濾器功能不正常運行,我不知道我錯過了它。
我的問題是當用戶在第一個下拉列表中選擇一個促銷代碼時,它會根據您選擇的內容選擇一個到期代碼。因此,我想刪除附加促銷代碼中的所有代碼,即第二個下拉列表中的所有代碼。我不能使用.slice(),因爲它們不是按照時間順序排列的。我爲我的日期使用了momment.js,因此可能希望使用.isBefore()來比較日期。
所以我給你舉個例子,我選擇了第一個下拉式的promo_code「25ANC」 promo_expiration:「01/30/2017」。現在,應該從下拉菜單中刪除過去該日期的附加促銷下拉菜單中的任何內容。
我目前有$ watch功能,正在觀看ng-model的promo和addPromo。我知道我需要創建一個功能,將進入和切片不符合日期驗證的促銷代碼。但是,我應該如何創建該功能,以及應該在哪裏調用該功能呢?
如果我缺少代碼的任何部分,請讓我知道我可以提供它。
我正要寫下你必須使用你的promoAction()調用去做魔術......但你有2個類似的代碼片段作爲例子。 –