【发布时间】:2016-11-21 16:43:37
【问题描述】:
我有一个使用 angularJs 的表单,我主要关心的是带有 ng-option 的选择标签 让我快速浏览一下表格,然后将解释我的问题。 注意:我删除了不必要的部分,例如 div 和 classes,因为这不是 leyout 问题。
<form role="form" name="feedbackForm" ng-submit="sendFeedback()" novalidate>
<!-- ---------------- SELECT ------------------->
<label>
<input type="checkbox" name="approve" value="" ng-model="feedback.agree">
<strong>May we contact you?</strong>
</label>
<div ng-show="feedback.agree" ng-model="feedback.myChannel">
<select class="form-control c-select" name="select" ng-model="feedback.myChannel" ng-options="channel.value as channel.label for channel in channels">
<option value="">Select a method</option>
</select>
</div>
<!-- --------------------TEEPHONE ---------------------->
<label for="telnum">Contact Tel.</label>
<input type="tel" id="areacode" name="areacode" ng-model="feedback.tel.areacode">
<input type="tel" id="telnum" name="telnum" ng-model="feedback.tel.number">
<!-- ------------- EMAIL ------------------------>
<label for="emailid" class="col-sm-2 control-label">Email</label>
<div class="col-sm-10">
<input type="email" id="email" name="email" ng-model="feedback.email" >
然后我在下面显示我的值只是为了开发目的
<p> Contact by: {{ feedback.myChannel }} </p>
<p> feedback.agree: {{'( ' + feedback.agree + ' )'}} </p>
<p> feedback.myChannel: {{'( ' + feedback.myChannel + ' )'}} </p>
在控制器和 ng-option 我有:
$scope.channels = [
{ value:"Tel", label:"Tel" },
{ value:"Email", label:"Email" },
{ value:"Tel & Email", label:"Tel & Email" }
];
然后为了向服务器推送反馈,我正在创建这个对象:
$scope.feedback = { myChannel:"", firstName: '', lastName: '', agree: false, email: '' };
这里有一些图片显示所有这些变量和值都已正确提供给站点。
我的问题是:
我正在尝试使用$scope.feedback.myChannel 来满足其他需求,但我在我的控制器上找不到,而我在我的表单中使用它。
这条线什么也没有。也许是一个空字符串:
console.log('myChannel = ' + $scope.feedback.myChannel);
所有这些 if s 都不起作用并且控制台中没有任何显示:
if($scope.feedback.myChannel == "Tel" || $scope.feedback.myChannel === "Tel & Email"){
console.log($scope.feedback.myChannel);
};
if($scope.feedback.myChannel === "Email" || $scope.feedback.myChannel === "Tel & Email"){
console.log($scope.feedback.myChannel);
};
这个没有做它应该做的事情:
if(!$scope.feedback.agree){ $scope.feedback.myChannel = ''; };
这个 console.log 给出了意想不到的值:
console.log('1: ' + $scope.feedbackForm.myChannel) // undefined
console.log('2: ' + $scope.feedback.myChannel); // nothing .. perhaps an empty string
【问题讨论】:
-
从这里删除
ng-model:<div ng-show="feedback.agree" ng-model="feedback.myChannel"> -
好吧,我刚做了..还是一样。
-
提供plnkr.co/edit并将您的完整代码复制到那里,然后我们可以更好地查看。
-
好的,会的。但是现在你能告诉我如何接受你对我的问题的编辑吗?或者它会被网站添加?谢谢.. 我也上传了大约 5 张照片,但我看到只有一张是重复的。
-
你认为我的 ng-options 写得对吗?
标签: angularjs forms validation