我正在尝试允许用户提交评论,以便在其中显示。但是,它似乎没有正常工作,因为我能够将其显示为预览,但是当我提交时,它不会保存为其他注释所在的数组。调试后,我发现它绑定到我的$ scope.review,但是它被提交到我的阵列,作为网页上显示的空白默认格式。源代码可以在http://plnkr.co/edit/q5fRIG6DzTegi3Ir1y8G?p=preview找到。 (注释掉了原始状态和范围的重置,这也给出了相同的错误)。
的Javascript
.controller('DishCommentController', ['$scope', function($scope) {
$scope.review = {name:"", rating:"Five", comment:"",date:""};
$scope.submitComment = function () {
$scope.review.date = new Date().toISOString();
// Push comment into the dish's comment array
$scope.dish.comments.push("$scope.review");
//reset form to pristine
// $scope.commentForm.$setPristine="";
//reset JavaScript object that holds your comment
// $scope.review = {name:"", rating:"Five", comment:"",date:""};
}
HTML
<div class="media-list">
<ul ng-show="!commentForm.comment.$error.required && !commentForm.comment.$pristine && !commentForm.name.$error.required && !commentForm.name.$pristine">
<blockquote>
<p>{{review.rating}} Stars</p>
<p>{{review.comment}}</p>
<footer>By {{review.name}} on {{review.date | date:'mediumDate'}} </footer>
</blockquote>
</ul>
</div>
答案 0 :(得分:1)
你需要推送对象:
$scope.dish.comments.push($scope.review);
答案 1 :(得分:1)
您正在推送一个字符串,而您需要推送一个对象:
$scope.dish.comments.push($scope.review);
此外,$scope.dish.comments
属于DishDetailController
。 submitComment
方法属于DishCommentController
。范围是控制器定义的,因此他们不会知道彼此的存在。
如果您希望共享范围
,则需要将方法放在同一个控制器中答案 2 :(得分:0)
同意Lucas,您需要添加对象而不是字符串。此外,您的新审核字段名称与现有评论中的现有字段不匹配
.controller('DishCommentController', ['$scope', function($scope) {
$scope.review = {
rating:5,
comment:"",
author:"",
date:""
};
$scope.submitComment = function () {
$scope.review.date = new Date().toISOString();
// Push comment into the dish's comment array
$scope.dish.comments.push($scope.review);
//reset form to pristine
$scope.commentForm.$setPristine="";
//reset JavaScript object that holds your comment
$scope.review = {author:"", rating:5, comment:"",date:""};
}
}])
注意我将“name”修改为“author”,将评级值从“Five”修改为5.您需要检查“preview”html中的绑定以匹配更改!
修改了plunk here