【问题标题】:Default value input undefined result when post using angular js使用角度js发布时默认值输入未定义结果
【发布时间】:2018-10-05 13:05:28
【问题描述】:

我想知道,当输入具有分配给控制器的默认值并且当您在服务器端发布此输入未定义时,为什么不工作。但是,当您直接键入以输入其工作并获取值时。为什么在发布到服务器端时分配默认值 undefined 有什么区别。

<input type="text" id="defval" name="defval" ng-value="myvar" ng-model="Data.defval">

控制器

    app.controller('RoomContrroller', function($scope, $http){
$scope.myvar=1;
  $scope.SaveRecord = function (msg) {
          $scope.loaderForm=true;
          var formdata = $scope.Data;
          $http.post("Add.php", formdata)
            .then(function(response){

              console.log(response.data);
              if(response.data==0){
                  $scope.fetch();
                  $scope.$emit('swalSuccess', { message: msg });
              }else{
                  $scope.$emit('swalError', { message: msg });
              }
              $scope.loaderForm=false;
          });
      }

  }

【问题讨论】:

  • 您能否提供您的控制器的 sn-p 以及您如何将数据发送到服务器?
  • 请重新表述您的问题并包含您的代码。尝试将问题限制在您面临的特定问题上。当前的帖子很难理解。
  • 因为你肯定不会在控制器内部为Data.defval 赋值。分享你的控制器代码
  • 对不起我的错。当您直接在输入中键入值时,代码在向服务器发送数据时工作正常。但是,当您分配默认值时,它在服务器中未定义。
  • 为 Data.defval 赋值可以正常工作@ShashankVivek。

标签: angularjs


【解决方案1】:

不要使用 ng-value,refer this

<input type="text" id="defval" name="defval" ng-model="Data.defval">

在控制器中

app.controller('RoomContrroller', function($scope, $http){
$scope.Data.defval='1'; // initialize here <-------------
$scope.SaveRecord = function (msg) {
      $scope.loaderForm=true;
      var formdata = $scope.Data;
      $http.post("Add.php", formdata)
        .then(function(response){

          console.log(response.data);
          if(response.data==0){
              $scope.fetch();
              $scope.$emit('swalSuccess', { message: msg });
          }else{
              $scope.$emit('swalError', { message: msg });
          }
          $scope.loaderForm=false;
      });
  }

}

【讨论】:

  • 我试过你的初始化代码 $scope.Data.defval=1;但它的未定义属性defval。但是,我想到了这一点。我认为它与您的相同,但这是有效的 $scope.Data = {defval: '1'};谢谢@Shashank Vivek
  • @Rye:两个声明都是一样的。原因是我将 number 分配给了 input 字段希望它为 text 的变量。所以用$scope.Data.defval='1';更新了这个问题,它会起作用的。 ;)。感谢您的反馈伙伴
【解决方案2】:

您可以删除元素的ng-value,只需将这行代码更改为

var formdata = $scope.Data;

var formdata = ($scope.Data && $scope.Data.defval)? $scope.Data : {defval: 1};

【讨论】:

  • 感谢@Saeed.At。我尝试了您的代码,但在控制台日志上未定义 defval。这对我来说初始化工作 $scope.Data = {defval: '1'};
猜你喜欢
  • 2019-08-17
  • 2020-07-30
  • 2018-04-12
  • 2020-11-14
  • 1970-01-01
  • 2015-02-13
  • 2021-07-23
  • 2019-08-01
  • 1970-01-01
相关资源
最近更新 更多