我的输入有值,当我为每个输入添加ng-model
时,该值不会显示。这是我的代码:
学生list.html
<!--edit form-->
<div class="col s12" ng-show="dataForm">
<div class="row">
<div class="input-field col l6 s12">
<input id="first_name" value="{{student[0].fname}}" type="text" class="validate">
<label class="active" for="first_name">First Name</label>
</div>
<div class="input-field col l6 s12">
<input id="last_name" value="{{ student[0].lname }}" type="text" class="validate">
<label class="active" for="last_name">Last Name</label>
</div>
</div>
<div class="row">
<div class="input-field col l6 s12">
<input id="email" value="{{ student[0].email }}" type="text" class="validate">
<label class="active" for="email">E-mail Address</label>
</div>
<div class="input-field col l6 s12">
<input id="age" value="{{ student[0].age }}" type="text" class="validate">
<label class="active" for="age">Age</label>
</div>
</div>
<button class="btn waves-effect waves-light" ng-click="updateStudent()">Submit
<i class="material-icons right">send</i>
</button>
<button class="btn waves-effect waves-light pink accent-3" ng-click="cancelEditStudent()">Cancel</button>
</div>
<!-- form -->
<table class="highlight responsive-table">
<thead>
<tr>
<th>Name</th>
<th>Age</th>
<th>Email</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="s in students | filter:searchStudent" ng-show="studentsPanel">
<td>{{ s.fname }} {{ s.lname }}</td>
<td>{{ s.age }}</td>
<td>{{ s.email }}</td>
<td><a href="javascript:void(0)" ng-click="editStudent(s.id)">Edit</a> <a href="javascript:void(0)" ng-click="deleteStudent(s.id)">Delete</a></td>
</tr>
</tbody>
</table>
studentController.js
angular
.module('studentInfoApp')
.factory('Student', Student)
.controller('StudentsController', StudentsController)
.config(config);
function config($routeProvider) {
$routeProvider
.when('/', {
controller: 'StudentsController',
templateUrl: 'app/views/student-list.html'
})
.otherwise({
redirectTo: '/'
});
}
function Student($resource) {
//return $resource('/students/:id');
return $resource("/students/:id", {}, {
'get': {method:'GET'},
'save': {method:'POST'},
'query': {method:'GET', isArray:true},
'remove': {method:'DELETE'},
'delete': {method:'DELETE'}
});
}
function StudentsController(Student, $scope, $http) {
$scope.editStudent = function(id) {
Student.query({ id: id }, function(data, headers) {
$scope.student = data;
$scope.dataForm = true;
}, function (error) {
console.log(error);
});
}
}
这实际上有效,但是如果我在输入中添加模型,例如:
<input id="first_name" value="{{student[0].fname}}" type="text" class="validate" ng-model="editForm.fname">
输入值不再显示。我在这里错过了什么吗?
答案 0 :(得分:2)
<input />
的值被第一个摘要上ng-model
引用的变量的值覆盖。
当您使用ng-model
时,您正在声明双向绑定。 Angular会将<input />
的值与引用的变量同步,反之亦然。
不是使用<input />
属性设置value
的初始值,而是将ng-model
引用的变量设置为所需的初始值。
答案 1 :(得分:1)
ng-model指令将为您设置值。 只需删除标记中的值并将ng-model设置为
即可<input id="first_name" type="text" class="validate" ng-model="student[0].fname">
下次请提供一个plunkr / jsfiddle等。
此致