2016-06-10 56 views
0

我需要能够在角度控制器中看到日期选择器是否是原始的。尝试了各种各样的东西,包括用方法发送原始值,但无法获得此值。下面是视图代码:在角度控制器中获得原始价值

<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

您正在使用:

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

+0

当我恢复了变化遗憾的错误。更新的问题显示实际更改,但仍然有相同的错误:无法读取未定义的属性'$ pristine' –

+0

这可能是由于控制器在创建视图之前运行。查看更新的答案。 –

+0

app.js:11706 TypeError:无法读取未定义的属性'valuationDatePickerFrom' –

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