ng-model 值中的 AngularJS 日期未传递给控制器

问题描述 投票:0回答:3

当我单击“检查可用性”按钮时,日期值不会传递到控制器

<div class='input-group date'>
         <input ng-model="BookedFromDate" type="text" [email protected]("dd/MM/yyyy") class="form-control BookedFDate" style="border-width: 0 0 2px 0;">
      <span class="input-group-addon">
          <i class="font-icon font-icon-calend"></i>
       </span>
                                       
   </div>

角度器:

$scope.CheckAvailability = function () {
    alert("Hello, " + $scope.BookedFromDate);
};
javascript jquery angularjs
3个回答
2
投票

忘记 ASP。在 AngularJS 中,输入不需要值。只需填充

ng-model
。您可以在控制器中或使用 HTML 中的
ng-init
来完成此操作。要屏蔽/过滤日期,请使用
$filter
服务。通常不会直接使用,所以我建议在
ng-init
中应用过滤器。 AngularJS 有一个用于此目的的
date
过滤器。

这是一个例子:

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
  $scope.now = new Date();
  $scope.CheckAvailability = function() {
    console.log("Date:", $scope.BookedFromDate);
  };
});
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>

<body>
  <div ng-app="myApp" ng-controller="myCtrl">

    <div class='input-group date'>
      <input ng-model="BookedFromDate" 
             type="text" 
             ng-init="BookedFromDate = (now | date : 'dd/MM/yyyy')" 
             class="form-control BookedFDate" 
             style="border-width: 0 0 2px 0;">

      <span class="input-group-addon">
      <i class="font-icon font-icon-calend"></i>
    </span>
      <button ng-click="CheckAvailability()">Click</button>
    </div>

  </div>
</body>
</html>


或者将类型从

text
更改为
date
以完全忽略过滤器和屏蔽。

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
  $scope.BookedFromDate = new Date();
  $scope.CheckAvailability = function() {
    console.log("Date:", $scope.BookedFromDate);
  };
});
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>

<body>
  <div ng-app="myApp" ng-controller="myCtrl">

    <div class='input-group date'>
      <input ng-model="BookedFromDate" 
             type="date" 
             class="form-control BookedFDate" 
             style="border-width: 0 0 2px 0;">

      <span class="input-group-addon">
      <i class="font-icon font-icon-calend"></i>
    </span>
      <button ng-click="CheckAvailability()">Click</button>

    </div>
    
  </div>
</body>
</html>


0
投票

希望这段代码能有所帮助,在角度上,value标签的用处较少,因为我们以两种方式绑定值。

<body ng-app="app">
    <div ng-controller="EditCtrl">
      <input type="text" ng-model="item.title" />
      <input type="date" ng-model="item.date" />
      {{item.date}}
    </div>
  </body>

0
投票

您的代码中似乎可能存在一些问题。首先,当使用 Razor 语法使用当前日期初始化 ng-model 时,应该使用双大括号在 AngularJS 中进行数据绑定。其次,确保 CheckAvailability 函数正确绑定到某个事件,例如单击按钮。这是代码的修改版本:

<div class='input-group date'>
    <input ng-model="BookedFromDate" type="text" value="{{@DateTime.Now.ToString("dd/MM/yyyy")}}" class="form-control BookedFDate" style="border-width: 0 0 2px 0;">
    <span class="input-group-addon">
        <i class="font-icon font-icon-calend"></i>
    </span>
</div>

<button ng-click="CheckAvailability()">Check Availability</button>

在你的控制器中:

app.controller('YourController', function($scope) {
    $scope.CheckAvailability = function () {
        alert("Hello, " + $scope.BookedFromDate);
    };
});

确保您已在项目中包含 AngularJS,并且控制器与 HTML 的相关部分相关联。另外,请确保正确设置 ng-click 指令或其他一些事件绑定以触发 CheckAvailability 函数。

© www.soinside.com 2019 - 2024. All rights reserved.