32

私は AngularJS を初めて使用し、問題を解決できないという問題を抱えています。stackoverflow に同様の質問がありましたが、役に立たなかったようです。私は基本的に ng-click で更新されるフォームを持っていますが、テキスト ボックスのいずれかにテキストを入力すると、それらのテキスト ボックスは更新されなくなります。

これは私のHTMLです

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>



これは、誰かがリンクをクリックしたときに呼び出される私の関数です

$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;
  })
}
4

1 に答える 1

116

リンクにはログインが必要です。

問題について推測する必要がある場合は、角度スコープの問題に関連している可能性があります。代わりに、ng-model バインディングをオブジェクト プロパティに変更してみてください。あなたのhtmlでは、代わりに:

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

これを行う

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

そして、JavaScript の ajax コールバックで、次のように変更します。

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

この問題の詳細については、https ://github.com/angular/angular.js/wiki/Understanding-Scopes を参照してください。

于 2013-10-11T04:29:42.603 に答える