首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ng-click未将值发送到角度控制器

ng-click未将值发送到角度控制器
EN

Stack Overflow用户
提问于 2017-10-06 02:20:31
回答 1查看 97关注 0票数 1

我有一个表单,并试图将输入的值发送到角度控制器,但单击时,控制器中的值显示为undefined。html代码

代码语言:javascript
复制
<div ng-if="questioncode == 2" class="user-form">
          <div class="row">
          <form>
            <div class="col-sm-12">
              <label class="control-label" >Phone number</label>
            </div>
              <div class="col-sm-12">
                <input  type="text" class="form-control" name="phone" placeholder="your phone number" ng-model="phone">
              </div>
              <div class="col-sm-12">
                 <input  type="submit" class=" col-sm-12 btn btn-primary" ng-click="submituserPhone();"  >
                 <flash-message   duration="3000" show-close="true" on-dismiss="myCallback(flash);" ></flash-message>
              </div>
              </form>
          </div>
       </div>

角度控制器

代码语言:javascript
复制
  $scope.submituserPhone = function() {
console.log($scope.phone);
  $http.post('insertphone',$scope.phone),then(function() {
    if(response.data.status === false) {
      Flash.create('danger',response.data.message);
    }else{
      $scope.questioncode = 3;
    }
  })


 }
EN

回答 1

Stack Overflow用户

发布于 2017-10-06 02:30:43

所以问题出在ng-if,它创建了一个新的作用域,因此作用域变量phone在控制器中没有更新。这里有两种方法来解决这个问题。

使用$parent的

您可以使用$parent来更新父作用域的变量,而不是当前的变量,然后您的变量将在控制器中可见。

代码语言:javascript
复制
var app = angular.module('myApp', []);

app.controller('MyController', function MyController($scope) {
  $scope.questioncode = 2;
  $scope.submituserPhone = function() {
    console.log($scope.phone);
  }
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-controller='MyController' ng-app="myApp">
  <div ng-if="questioncode == 2" class="user-form">
    <div class="row">
      <form>
        <div class="col-sm-12">
          <label class="control-label">Phone number</label>
        </div>
        <div class="col-sm-12">
          <input type="text" class="form-control" name="phone" placeholder="your phone number" ng-model="$parent.phone">
        </div>
        <div class="col-sm-12">
          <input type="submit" class=" col-sm-12 btn btn-primary" ng-click="submituserPhone();">
          <flash-message duration="3000" show-close="true" on-dismiss="myCallback(flash);"></flash-message>
        </div>
      </form>
    </div>
  </div>
</div>

将变量作为参数传递:

您可以简单地将创建的作用域的变量传递给控制器函数并在那里更新它,如下所示。

代码语言:javascript
复制
var app = angular.module('myApp', []);

app.controller('MyController', function MyController($scope) {
  $scope.questioncode = 2;
  $scope.submituserPhone = function(phone) {
    $scope.phone = phone;
    console.log($scope.phone);
  }
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-controller='MyController' ng-app="myApp">
  <div ng-if="questioncode == 2" class="user-form">
    <div class="row">
      <form>
        <div class="col-sm-12">
          <label class="control-label">Phone number</label>
        </div>
        <div class="col-sm-12">
          <input type="text" class="form-control" name="phone" placeholder="your phone number" ng-model="phone">
        </div>
        <div class="col-sm-12">
          <input type="submit" class=" col-sm-12 btn btn-primary" ng-click="submituserPhone(phone);">
          <flash-message duration="3000" show-close="true" on-dismiss="myCallback(flash);"></flash-message>
        </div>
      </form>
    </div>
  </div>
</div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46592382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档