Soru ng-model, metin girişine yazdıktan sonra artık güncellenmiyor


Ben AngularJS için yeni ve sorun çözme konusunda bir sorun yaşıyorum, stackoverflow üzerinde benzer bir soru vardı ama bana yardım etmek için görünmüyordu. Temelde ng-click ile güncellenen bir form var, ama bir keresinde bir metin kutusuna metin girdiğimde, bu metin kutuları artık güncellenmiyor.

Bu benim HTML'm

Edit Course:
<li ng-repeat="course in courses">
  <p>
    <a ng-click="Edit_Course(course.id)">{{course.course_name}}</a>
  </p>
</li>
<div ng-show="showedit == 1">
  <form novalidate ng-submit="edit_course()" class="simple-form">
    <label for="form_course_name">Course</label>
      <input type="text" id="form_course_name" ng-model="edit_course_name">
    <label for="form_par">Par</label>
      <input type="text" id="form_par" ng-model="edit_course_par">
    <label for="form_course_location">Course Location</label>
      <input type="text" id="form_course_location" ng-model="edit_course_location">
     <input type="submit" id="submit" value="Edit Course" />
   </form>
</div>



Bu, birinin bir bağlantıyı tıkladığında çağrılan işlevim

$scope.Edit_Course = function (id) {
    var course = {
        'course_id' : id
    };

    $http({method: "POST", url: "http://www.dgcharts.com/editcourse", data: course})
    .success(function(data, status, headers, config){

      thecourse = data["course"];
      $scope.edit_course_name = thecourse.course_name;
      $scope.edit_course_par = thecourse.par;
      $scope.edit_course_location = thecourse.course_location;
      $scope.edit_course_id = thecourse.id;
      $scope.showedit = 1;
  })
}

29
2017-10-11 04:11


Menşei




Cevaplar:


bağlantınız bir giriş gerektiriyor.

Sorununuzu tahmin etmem gerekirse, açısal kapsam belirleme sorunuyla ilişkili olabilir. ng-model bağlamanızı yerine bir nesne özelliğine dönüştürmeyi deneyin. html'inizde, bunun yerine:

<input type="text" id="form_course_name" ng-model="edit_course_name">

Bunu yap

<input type="text" id="form_course_name" ng-model="course.edit_course_name">

ve javascript'inde ajax geri aramada şunu değiştirin:

$scope.course = {};  //only do this if $scope.course has not already been declared
$scope.course.edit_course_name = thecourse.course_name;

Bu konuda daha fazla bilgi için bkz: https://github.com/angular/angular.js/wiki/Understanding-Scopes


115
2017-10-11 04:29



Çok teşekkür ederim, bunu 60 saniyede çözdüm. Bu projeye devam etmeden önce kapsamları kesinlikle okuyacağım çünkü onları tam olarak anlamıyorum. - EvWill
@EvWill, buradaki ilkel ile neden çalışmadığına dair güzel bir açıklama github.com/angular/angular.js/wiki/Understanding-Scopes - Mirko
Bir aydan fazla yanlış bir şekilde kullanıyordum, çok teşekkür ederim. Bu doğru yol değilse, Angular, devlerin bu şekilde kodu yazmasına izin vermemelidir. Bu problem iki gece için beni dehşete düşürdü. : D - Sandesh Damkondwar
aynı problemi kapsamaktaydı ancak ng-include ile ilişkiliydi. Çok yardımcı link - Toumi
Anladım, teşekkürler! - Zeb