2

profile-form.html yönergesinin direktifinde bir dizi var. Ancak, bu dizinin değerini (all_languages) veya yönergesinde ng-options'u kullanarak yineleme yapamıyorum. Sadece string olarak yazdırılıyor. Ben Açısal'ya yeni geldim ve belki de her şeyi çok yanlış yapıyor.Görüntüden değer elde edemiyorum (yönerge)

Direktifi

app.directive("profileForm", function() { 
    return { 
     restrict: "E", 
     templateUrl: "/static/translatorNgApp/profile-form.html", 
     controller: ['$scope','$http',function($scope, $http) { 

      this.getCookie = function(name) { 
       var cookieValue = null; 
       if (document.cookie && document.cookie != '') { 
        var cookies = document.cookie.split(';'); 
        for (var i = 0; i < cookies.length; i++) { 
         var cookie = jQuery.trim(cookies[i]); 
         // Does this cookie string begin with the name we want? 
         if (cookie.substring(0, name.length + 1) == (name + '=')) { 
          cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); 
          break; 
         } 
        } 
       } 
       console.log(cookieValue); 
       return cookieValue; 
      }; 

      $scope.csrftoken = this.getCookie('csrftoken'); 

      $scope.myForm={}; 
      $scope.all_languages = ['English', 'Hindi']; 
      $scope.language_pairs = []; 

      $scope.getAllLanguages = function() { 
       $http.get('/getAllLanguages' 
       ).success(function(response) { 
        // success 
        $scope.all_languages.concat(response); 
       }).error(function(response) { 
        // failed 
       }); 
      }; 

      $scope.submitForm = function() { 
       var postData = { 
        method: 'POST', 
        url: '/accounts/tprofile/', 
        // headers : {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}, 
        headers: {'X-CSRF-Token' : $scope.csrftoken }, 
        data: $scope.myForm 
       }; 

       $http(postData) 
        .then(function(response) { 
          // success 
         }, 
         function(response) { // optional 
          // failed 
         }); 
        console.log("Form submitted"); 
       // $scope.message = "Sent Successfully 2"; 
       // console.log(postData); 
       console.log(postData); 
       console.log($scope.myForm); 

      }; 

      $document.ready(function(){ 
       console.log("document ready"); 
       $scope.getAllLanguages(); //This can be commented out for the question's sake. 
      }); 
     }], 
     controllerAs: "profileFormCtrl" 
    }; 
}); 

Direktifi Şablon (profil form.html)

  <div class="form-group" > 
       <label for="id_source_language">Source language: </label> 

       <ul> 
        <li> 
         <pre>all_languages = {{all_languages | json}}</pre> 
         <select data-ng-model="source" ng-options="language for language in all_languages" class="form-control" id="id_source_language" name="source_language" placeholder="Source Language" required> 
         </select> 
         <button ng-click="language_pairs.pop($index)" aria-label="Remove">Remove</button> 
         <button ng-click="language_pairs.push({})">Add more pair</button> 
        </li> 

       </ul> 

      </div> 
+1

Tam olarak nasıl çalıştığını bilmiyorum, ancak denetleyicideki '$ document 'ifadesini aşarak sorunu çözdü. – Shivendra

+0

niçin '$ document.ready' bir denetleyicinin içinde, oraya sahip olmamanız gerekir.instead 'doğrudan kontrolörün sonunda' getAllLanguages' yöntemini çağırıyor .. –

+0

@PankajParkar Bahsettiklerimi takip ettim ve işe yaradı. Teşekkürler. – Shivendra

cevap

0

kapsamı spesifik bir yöntemi çağırmak için mantıklı olmayan bir açısal bölümü içinde document.ready olay kullanarak . Bu olaydan sonra document.ready olayı zaten yapıldığı için yalnızca açısal işlem başlatıldı.

İdeal olarak kod çalışma durumunuzu yapmak için orada gerekli olmayan $document.ready(function(){ .... }); kodunu kaldırmanız gerekir. Ve document.ready halihazırda tamamlanmış olduğundan, direktiften kayıt yaptırmış olmanız çağrı yapılmayacaktır.

İlgili konular