2015-10-16 75 views
0

當我將一個值設置爲type="date"時,AngularJS將不知道元素是否具有值。以下是我的示例代碼。AngularJS ng必需的ngDisabled不起作用

<script src="angular.min.js"></script> 
<div name="mainForm" ng-app="appTesting" ng-controller="ctrlTesting" ng-form> 
    <input type="date" ng-model="dateField" name="dateField" id="dateField" required /> 
    <button ng-disabled="mainForm.dateField.$error.required">A disabled button</button> 
    <button ng-click="setValue()">Set Value</button> 
</div> 
<script> 
angular.module("appTesting", []).controller("ctrlTesting", function($scope, $filter) { 
    $scope.setValue = function() { 
     $scope.dateField = $filter('date')(new Date(), 'yyyy-MM-dd'); 
     document.getElementById('dateField').value = $filter('date')(new Date(), 'yyyy-MM-dd'); 
    }; 
}); 
</script> 

將值設置爲輸入字段後,禁用的按鈕將保持禁用狀態。

有沒有辦法手動將$error.required設置爲true? 或者,有沒有辦法在設置一個值後手動觸發ng-disabled檢查?

回答

0

我不知道爲什麼它不應該爲你工作,但這個JSFiddle正常工作:

HTML:

<div ng-app="app"> 
    <div name="mainForm" ng-app="appTesting" ng-controller="ctrlTesting" ng-form> 
     <input type="date" ng-model="dateField" name="dateField" id="dateField" required /> 
     <button ng-disabled="mainForm.dateField.$error.required">A disabled button</button> 
     <button ng-click="setValue()">Set Value</button> 
    </div> 
</div> 

JS:

var app = angular.module("app", []); 
app.controller('ctrlTesting', ['$scope', '$filter', function ($scope, $filter) { 
    $scope.setValue = function() { 
     $scope.dateField = $filter('date')(new Date(), 'yyyy-MM-dd'); 
     document.getElementById('dateField').value = $filter('date')(new Date(), 'yyyy-MM-dd'); 
    }; 
}]); 
+0

有人可以解釋爲什麼它不適合我的原因嗎?我使用Chrome作爲瀏覽器。 – juntapao

+0

您是否檢查調試控制檯的錯誤? –

+0

是的,但我找不到任何錯誤。 – juntapao

0

insted的使用「的myForm.input。$ error.required「屬性,可以使用」myForm.input。$ error.date「。

這將滿足您從所需屬性中獲得的所有需求。

+0

謝謝,但ngDisabled沒有工作。您可以使用前一個答案中的小提琴進行驗證。 – juntapao