2015-04-13 6 views
1

Я получаю ошибку TypeError: Cannot read property '$setPristine' of undefined в следующем коде, где я пытаюсь выполнить inputCtrl.inputForm.$setPristine();

inputForm.js

(function(){ 
    var inputForm = angular.module('input-form', [ ]); 

    inputForm.directive('inputForm', function(){ 
     return { 
      restrict: 'E', 
      templateUrl: 'input-form.html', 
      scope: {data: "="}, 
      controllerAs: 'inputCtrl', 
      bindToController: true, 
      controller: ['$log', '$scope', function($log, $scope){ 
       var inputCtrl = this; 
       inputCtrl.inputValues = millennialsDefault; 

       inputCtrl.emitData = function() { 
       inputCtrl.data = inputCtrl.inputValues.topic1Data; 

       $log.debug("Emitting '" + 
         inputCtrl.inputValues.topic1Name + "' to '" + 
         inputCtrl.inputValues.topic2Name + "'"); 
       }; 

       inputCtrl.swapInput = function(){ 
        var swappedInputValues = { 
          topic1Name: inputCtrl.inputValues.topic2Name, 
          topic1Total: inputCtrl.inputValues.topic2Total, 
          topic1Data: inputCtrl.inputValues.topic2Data, 
          topic2Name: inputCtrl.inputValues.topic1Name, 
          topic2Total: inputCtrl.inputValues.topic1Total, 
          topic2Data: inputCtrl.inputValues.topic1Data, 
        }; 

        inputCtrl.inputValues = swappedInputValues; 
       }; 

       inputCtrl.clearInput = function(){ 
        inputCtrl.inputValues = 
        { 
          topic1Name: "", 
          topic1Total: undefined, 
          topic1Data: "", 
          topic2Name: "", 
          topic2Total: undefined, 
          topic2Data: "", 
        }; 
        inputCtrl.inputForm.$setPristine(); // TypeError: Cannot read property '$setPristine' of undefined 

Что я делаю неправильно ?

ответ

1

По-видимому, это решение изменить inputCtrl.inputForm.$setPristine(); на $scope.inputForm.$setPristine();.

Вот некоторые ссылки:

Если вы предпочитаете использовать this и избежать повторного ferencing $scope то это может быть решением: http://www.technofattie.com/2014/07/01/using-angular-forms-with-controller-as-syntax.html

0

проверкой всех открытых вызовов функций, которая рендеринг страницы до создания формы, которая может закончиться вверх в «$ setPristine неопределенно»

, например, в контроллере

$scope.reset= function(form){ 
     form.$setPristine(); 
    }; 
    $scope.reset(); 

, если есть что-то вроде этого вы можете увидеть, что ошибка, при загрузке сама она будет участвовать в $ setPristine();

+1

Хотя это действительно может произойти, я не думаю, что это действительно относится к ситуации, которая присутствовала в этом вопросе. Кроме того, этот вопрос был опубликован, а затем он ответил на вопрос *** больше года назад *** самими плакатами, поэтому маловероятно, что они все еще ищут жизнеспособный ответ. – Claies

Смежные вопросы