2016-03-25 27 views
1

Yazılmadığım bir kodun hatalarını ayıklamak ve sorunun nereden geldiğini anlamakta sorun yaşıyorum (açısal geliştirici değilim). Ben şu var: Eğer pencereyi yenilediğinizde deniyor: Bir radyo nesnesini başlatır bir ana kontrolör,

$scope.radio_structure = { 
     data: { 
      localisations: [] 
     }, 
     streams: [] 
    }; 

    $scope.stream_structure = { 
     url: "" 
    }; 


    $scope.localisation_structure = { 
     continent: "", 
     country: "", 
     city: "" 
    } 
    $scope.radio = angular.copy($scope.radio_structure); 

Ve ayrıca formun verilerini göndermek için bir işlev.

$scope.submit = function() { 
     console.log($scope.radio); 
     radioFact.add($scope.radio).then(
      function (success) { 
       flashesFact.show(success.data); 
       $location.url('/search'); 
      }, 
      function (error) { 
       console.log(error); 
       var response = { 
        type: 'danger', 
        msg: error.status + ' => ' + error.statusText 
       } 
       flashesFact.show(response); 
      } 
     ); 
    }; 

ve benim eklenti denetleyicisi

, aşağıdaki başlatma vardır:

// Init stream data structure 
    $scope.radio.streams.push(angular.copy($scope.stream_structure)); 
    // Init localisation data structure 
    $scope.radio.data.localisations.push(angular.copy($scope.localisation_structure)); 

Ve veri ng-modeli ile binded edilir:

<div class="col-sm-10"> 
    <input id="name" type="text" name="name" class="form-control" ng-model="radio.data.name" 
      ng-required="true" 
      placeholder="{{'RADIO_NAME_PH' | translate}}"> 
    <span class="glyphicon glyphicon-ok form-control-feedback feedback-success" 
      ng-show="suggest.name.$valid"></span> 
    <span class="glyphicon glyphicon-remove form-control-feedback feedback-error" 
      ng-show="suggest.name.$invalid"></span> 

    <p ng-show="suggest.name.$error.required && !suggest.name.$pristine" class="help-block"> 
     {{'RADIO_NAME_MISERR' | translate}} 
    </p> 
</div> 

Ve tetikleme düğmesi gönderin form gönderme zamanı:

<button type="submit" id="submit" name="submit" 
     class="col-sm-offset-2 col-sm-3 btn btn-success" ng-disabled="suggest.$invalid" 
     ng-click="submit($event)"> 
    {{'FORM_SUBMIT' | translate}} 
</button> 

Ve gönderdiğinizde denilen yöntem tetiklenir:

radio.add = function (data) { 
     var path = '*****'; 
     return $http({ 
      method: 'POST', 
      url: '*****' + path, 
      data: data, 
      headers: { 
       'path': path 
      } 
     }); 
    }; 

sorun şudur: Ben ilk defa form verilerini gönderdiğinizde beklendiği gibi çalışır. Ancak formu teslim ettikten sonra, yeni bir tane göndermeye karar verebilirim ve bunu yaparsam ve formda yeni değerler belirlediğimde değerler sıfırlanmaz ve aynı verileri ilk gönderimle birlikte gönderirim.

Benim anlayış

+0

Hmm, kapsamları gibi görünmüyor. $ Scope.submit'i tetikleyen "ng-click" etkinliğiyle ilgili öğe nerede? Ayrıca, 'radioFact' nedir? Bunun için kod nerede? – glcheetham

+0

Eksik bilgileri ekledim – krakig

cevap

0

İlk kapsamları bir çakışma olduğunu olurdun, başlangıç ​​konumunu tanımlamak bir başlat işlevini yapmak:

Sonra
$scope.init = function() { 
    $scope.radio_structure = { 
     data: { 
      localisations: [] 
     }, 
     streams: [] 
    }; 

    $scope.stream_structure = { 
     url: "" 
    }; 


    $scope.localisation_structure = { 
     continent: "", 
     country: "", 
     city: "" 
    } 
    $scope.initRadio(); 
} 

$scope.initRadio = function() { 
    $scope.radio = angular.copy($scope.radio_structure); 
} 

$scope.init(); 

tekrar başarmış sonra teslim init:

$scope.submit = function() { 
    console.log($scope.radio); 
    radioFact.add($scope.radio).then(
     function (success) { 
      flashesFact.show(success.data); 
      $scope.initRadio(); 
      $location.url('/search'); 
     }, 
     function (error) { 
      console.log(error); 
      var response = { 
       type: 'danger', 
       msg: error.status + ' => ' + error.statusText 
      } 
      flashesFact.show(response); 
     } 
    ); 
}; 
+0

Bu bana aynı sonucu veriyor, aynı verilerden iki kat daha fazla – krakig

+0

ng-click AND ile bir eylem gerçekleştiriyorsunuz VE formu gönderirsiniz. Form etiketi kodunuza eklenmez, ancak sanırım aynı işlevi tetikler. Muhtemelen bu, çift veriye neden oluyor – JanP

+0

Gerçekten ne dediğinizi anlamıyorum. Ng tıklama, bir hizmetin "add()" yöntemini tetikler (kodu ekledim) ve bu yöntem, radyo nesnesini kapsamdan alır ve bir POST isteğine sahip bir sunucuya gönderir. – krakig

İlgili konular