在Angular控制器中获得原始价值

时间:2016-06-10 11:41:30

标签: angularjs controller ng-controller

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

<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类和前端控制,或者从后端设置原始状态而不是获取或检查原始状态

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

<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