1

如果 datepicker 是原始的,我需要能够在 Angular 控制器中看到。尝试了各种方法,包括在方法中发送原始值,但无法获得该值。下面是查看代码:

<form name="myForm">
                                <!-- Datepicker From -->
                                <div class="small-6 medium-5 large-2 columns" ng-if="vm.subViewActive">
                                    <div class="input-group">
                                        <input name="valuationDatePickerFrom" ng-model="name" type="text" class="datepicker" id="valuationDatePickerFrom" placeholder="DD/MM/YYYY" pikaday="vm.datePickerFrom" on-select="vm.selectStartDate(pikaday)" year-range="{{ vm.yearRange }}" >
                                        <div class="input-group-addon">
                                            <label for="valuationDatePickerFrom" class="postfix">
                                                <i class="fa fa-calendar"></i> From
                                            </label>
                                        </div>
                                    </div>
                                </div>
                </form>

然后我也尝试了:

var isPristine = $scope.myForm.valuationDatePickerFrom.$pristine;
console.log(isPristine);  

在我的控制器中,但无法获得原始值。在这里阅读很多帖子,但主要与 CSS 类和前端控制或从后端设置原始状态而不是获取或检查原始状态有关

感谢任何可以提供帮助的人。

4

2 回答 2

2

您正在使用:

var isPristine = $scope.myForm.valuationDatePickerFrom.$pristine;

但您的表单名称不是myForm.

改变<input name="name"... <input name="valuationDatePickerFrom"...

然后你可以使用:

var isPristine = $scope.userForm.valuationDatePickerFrom.$pristine;

此外,控制器在创建视图之前被调用,因此myForm在控制器运行时不存在。尝试添加$timeout这样的:

$timeout(function() {
  var isPristine = $scope.userForm.valuationDatePickerFrom.$pristine;
  console.log(isPristine);
}, 100);

plunkr

于 2016-06-10T12:03:04.807 回答
1

上述解决方案仅适用于页面加载,但您需要在使用页面时知道该值。而是在动作发生时将值传递给控制器​​:

<form name="myForm"> <input type="text" name="valuationDatePickerFrom" ng-model="valuationDatePicker" ng-blur="alerty(myForm.$pristine)"> </form>

.controller('MainController', function($scope) { $scope.alerty = function(isPristine){ alert('isPristine: ' + isPristine); };

https://plnkr.co/edit/f0EWvYmoXCn8UOH3QCfE?p=preview

于 2017-06-21T13:57:14.973 回答