gpt4 book ai didi

angularjs - 如果我可以在我的 html 页面中使用 $scope 值,为什么我不能在我的 Controller 中使用它?

转载 作者:行者123 更新时间:2023-12-02 04:39:56 27 4
gpt4 key购买 nike

我有一个使用 angularJs 的表单,我主要关心的是带有 ng-option 的 select 标签 让我给你快速浏览一下表格,然后会解释我的问题。 注意:我删除了不必要的部分,例如 div 和类,因为这不是布局问题。

<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>

在 Controller 和 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: '' };

这里有一些图片显示所有这些变量和值都已正确提供给网站。

when unchecked email option is working tel option is working tel & email option is working

我的问题是:我正在尝试使用 $scope.feedback.myChannel 来满足其他需求,但在我的 Controller 上找不到,而我在我的表单中使用它。

这一行什么也没给出。也许是一个空字符串:

console.log('myChannel = ' + $scope.feedback.myChannel);

empty

所有这些 if 都不工作,控制台中没有任何显示:

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

unexpected

最佳答案

嗯,根据你的plnkr ,你正在清理你的 object 然后你尝试做一个 console.log(),当然它会是一个空字符串。

还有:

console.log('1: ', $scope.feedbackForm.myChannel)

未定义,因为在您的表单中没有包含此名称标记 来调用选择(由于您将其命名为 name="select"),您应该执行以下操作:

console.log('1: ', $scope.feedbackForm.select)

工作 DEMO .

关于angularjs - 如果我可以在我的 html 页面中使用 $scope 值,为什么我不能在我的 Controller 中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38447492/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com