输入文本输入后,ng-model 不再更新 [英] ng-model no longer updates after typing into text input

查看:22
本文介绍了输入文本输入后,ng-model 不再更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是 AngularJS 的新手,我遇到了一个无法解决的问题,stackoverflow 上有一个类似的问题,但它似乎没有帮助我.我基本上有一个通过 ng-click 更新的表单,但是一旦我在任何文本框中输入文本,这些文本框就不再更新.

这是我的 HTML

编辑课程:<li ng-repeat="课程中的课程"><p><a ng-click="Edit_Course(course.id)">{{course.course_name}}</a></p><div ng-show="showedit == 1"><form novalidate ng-submit="edit_course()" class="simple-form"><label for="form_course_name">课程</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">课程位置</label><input type="text" id="form_course_location" ng-model="edit_course_location"><input type="submit" id="submit" value="编辑课程"/></表单>



这是我的函数,当有人点击链接时调用

$scope.Edit_Course = function (id) {var 课程 = {'course_id' : id};$http({method: "POST", url: "http://www.dgcharts.com/editcourse", 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;})}

解决方案

您的链接需要登录.

如果我不得不猜测您的问题,它可能与角度范围问题有关.尝试将您的 ng-model 绑定更改为对象属性.所以在你的 html 中,而不是:

这样做

在您的 javascript 中,在 ajax 回调中,将其更改为:

$scope.course = {};//仅当 $scope.course 尚未声明时才执行此操作$scope.course.edit_course_name = thecourse.course_name;

有关此问题的更多信息,请参阅:https://github.com/angular/angular.js/wiki/理解范围

I am new to AngularJS and I am having a problem that I am having trouble solving, there was a similar question on stackoverflow but it didn't seem to help me out. I basically have a form that gets updated by ng-click, but once once I enter text into any of the text boxes, those text boxes no longer update.

This is my 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>



This is my function that is called when someone clicks on a link

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

解决方案

your link requires a login.

if i have to guess about your problem, it may be related to angular scoping issue. try changing your ng-model binding to an object property instead. so in your html, instead of:

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

do this

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

and in your javascript, on the ajax callback, change it to:

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

for more info on this issue, see: https://github.com/angular/angular.js/wiki/Understanding-Scopes

这篇关于输入文本输入后,ng-model 不再更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆