以一个文本输入为例,我们采用一个简单的形式。我希望它是部分的,所以我可以添加其他输入,并为创建和更新艺术家提供一个表单。
<input name="name" type="text" data-ng-model="artist.name" id="name">
<section data-ng-controller="ArtistsController">
<form name="artistForm" class="form-horizontal" data-ng-submit="create()" novalidate>
<ng-include src="'/modules/artists/views/partials/form-artist.client.view.html'"></ng-include>
</form>
</section>
<section data-ng-controller="ArtistsController" data-ng-init="findOne()">
<form name="artistForm" class="form-horizontal" data-ng-submit="update(artistForm.$valid)" novalidate>
<ng-include src="'/modules/artists/views/partials/form-artist.client.view.html'"></ng-include>
</form>
</section>
在我的客户端控制器中,我可以创建一个艺术家:
$scope.create = function() {
var artist = new Artists({
name: this.name
});
artist.$save(function(response) {
//success!
}, function(errorResponse) {
$scope.error = errorResponse.data.message;
});
}
我可以更新艺术家的名字:
$scope.update = function() {
var artist = $scope.artist;
artist.$update(function() {
//success!
}, function(errorResponse) {
$scope.error = errorResponse.data.message;
});
};
问题是当我创建艺术家时,this.name
未定义。如果我将parial中的data-ng-model更改为data-ng-model="name"
,我可以正确创建艺术家,但输入不会在更新表单中填写名称。
有关如何正确合并两个表单的任何想法吗?
答案 0 :(得分:2)
该值实际存储在范围中的artistForm对象中。
你只需要改变:
name: this.name
到
name: $scope.artistForm.name.$viewValue
PS:console.log($ scope)对调查很有帮助
答案 1 :(得分:0)
我可以看到,在创建的情况下,您尚未将艺术家对象添加到范围。你需要将艺术家添加到$ scope。 在部分你应该使用artist.name。