ng-true-value和AngularJs中要求的

时间:2015-03-19 01:08:18

标签: angularjs

<input type="checkbox" id="acknowledge" name="acknowledge" 
       ng-model="formData.acknowledge" 
       ng-true-value="true" 
       ng-required="formData.acknowledge !='true'"/>

<div ng-show="(peopleworksForm.acknowledge.$dirty || peopleworksForm.submited)  && formData.acknowledge !='true'">
   Please acknowledge that the information is correct</div>

我觉得ng-required出现了问题。没有requiredng- required,它可以正常工作。如果我不选中该复选框,则会返回错误消息。但也存在一个问题:虽然我选中了复选框form.$valid = false。这就是我尝试使用requiredng-required的原因。您可以要求我删除ng-true-value并使用required。我知道那也有用。但问题是我在控制器中加载formData.acknowledge = "true",所以当页面加载时,必须检查复选框。所以我不得不使用ng-true-value。任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:2)

要重新启动,您需要在未选中复选框acknowledge的情况下通过选中表单的$valid状态或复选框来显示消息。

此外,当分配"true" - 字符串值而不是true - 布尔值时,应从控制器检查复选框。

您是正确的,您需要使用ng-true-value重新定义为检查状态提供给模型的值。但是,您错误地使用ng-true-value,因为您没有分配字符串值,而是分配布尔值。

正确的方法如下(注意双引号"' '"):

<input type="checkbox" name="foo"
       ng-model="foo" ng-true-value="'true'" required>

在控制器中,您可以指定给"true"

$scope.foo = "true";

plunker

此外,您不需要将ng-required与表达式一起使用 - 这将在有条件的基础上进行控制,我认为您希望它始终是&#34;必需&#34 ;

答案 1 :(得分:0)

一般模式

您应该从控制器获取所需的任何数据绑定。如有必要,这些数据应来自您注入或依赖的服务。听起来你大致跟着它。

NG-真值

如果你想要其他而不是true或false,你应该只需要使用ng-true-value,因为它是the default behavior

可能是错的

在您的控制器中,您可能只是将您的财产默认为true,如果这是您需要的。

informationAcknowledgeOnlineRegistrationChange = true;  // replace value you get from your service

应该做你需要的一切。

答案 2 :(得分:0)

正如您自己回答的那样,您可以删除ng-true-value并使用所需的:

<input type="checkbox" id="acknowledge" name="acknowledge" 
   ng-model="formData.acknowledge" 
   required />
<div ng-show="(peopleworksForm.acknowledge.$dirty || peopleworksForm.submited)  && formData.acknowledge">
Please acknowledge that the information is correct</div>

在控制器中,数据绑定将是:

formData.acknowledge = true; //not 'true' as string

答案 3 :(得分:0)

如果您未选中复选框,则不会提供符合ng-required的值。这里你可以做的是当用户没有为复选框提供任何值时为复选框设置默认值