2015-10-16 79 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