我试图为表单中的某些元素设置默认值,虽然它适用于所有输入字段,但它似乎不适用于textarea,而代码几乎一样。AngularJS无法设置值textarea
HTML的形式:
<form class="form-horizontal" id="infoForm" name="form" ng-submit="ctrl.submitInfoForm(form)" novalidate>
<div class="form-group">
<label for="inputEditName">Name</label>
<input type="text" class="form-control" value="{{ctrl.viewedName}}" id="inputEditName" ng-model="viewUser.name">
</div>
<div class="form-group">
<label for="inputEditLocation">Location</label>
<input type="text" class="form-control" value="{{ctrl.viewedLocation}}" id="inputEditLocation" ng-model="viewUser.location">
</div>
<div class="form-group">
<label for="inputEditWebsite">Website</label>
<input type="text" class="form-control" value="{{ctrl.viewedWebsite}}" id="inputEditWebsite" ng-model="viewUser.website">
</div>
<div class="form-group">
<label for="inputEditBio">Bio</label>
<textarea rows="3" class="form-control" id="inputEditBio" ng-model="viewUser.bio" >{{ctrl.viewedBio}}</textarea>
</div>
<button type="submit" class="btn btn-default">Save Changes</button>
</form>
ProfileController.js的相关部分:
var vm = this;
vm.getViewedName = getViewedName;
vm.getViewedLocation = getViewedLocation;
vm.getViewedWebsite = getViewedWebsite;
vm.getViewedBio = getViewedBio;
vm.viewedName = getViewedName();
vm.viewedLocation = getViewedLocation();
vm.viewedWebsite = getViewedWebsite();
vm.viewedBio = getViewedBio();
function getViewedName() {
if (vm.viewedName === undefined) {
var viewedName;
var viewedUser = UserService2.getViewedUser();
viewedName = viewedUser.name;
if (viewedName === "") {
viewedName = "-";
}
return viewedName;
} else {
return vm.viewedName;
}
}
function getViewedLocation() {
if (vm.viewedLocation === undefined) {
var viewedLocation;
var viewedUser = UserService2.getViewedUser();
viewedLocation = viewedUser.location;
if (viewedLocation === "") {
viewedLocation = "-";
}
return viewedLocation;
} else {
return vm.viewedLocation;
}
}
function getViewedWebsite() {
if (vm.viewedWebsite === undefined) {
var viewedWebsite;
var viewedUser = UserService2.getViewedUser();
viewedWebsite = viewedUser.website;
if (viewedWebsite === "") {
viewedWebsite = "-";
}
return viewedWebsite;
} else {
return vm.viewedWebsite;
}
}
function getViewedBio() {
if (vm.viewedBio === undefined) {
var viewedBio;
var viewedUser = UserService2.getViewedUser();
viewedBio = viewedUser.bio;
if (viewedBio === "") {
viewedBio = "-";
}
return viewedBio;
} else {
return vm.viewedBio;
}
}
默认只有名字在那一刻设置,所以它看起来是这样的:
名称:myname 位置: - 网站: - 个人简介:
为什么你使用value和ng-model这两个ng-model都会自动绑定所有元素中的value remove value属性,并为文本区域保留它 –
控制器中没有任何内容匹配textarea的ng模型,也没有'ctrl'前缀。创建一个显示问题的演示 – charlietfl