【发布时间】:2017-11-15 06:43:03
【问题描述】:
ng-repeat 模型在用户单击提交后不会更新,它只会在刷新时显示,我查看了类似的 problem,但我无法连接这些点。一位用户建议我做一个 ng-init,但我认为我做得不对。
使用 ng-init 它不显示任何数据,没有 ng-init 并删除它显示帖子的角度函数,但在单击后不更新模型。
注意:尖括号被替换,因为 laravel Blade 不喜欢它
html
<div id="mypost" class="col-md-8 panel-default" ng-init="getPosts()" ng-repeat="post in myposts">
<div id="eli-style-heading" class="panel-heading"><% post.title %></div>
<div class="panel-body panel">
<figure>
<p> <% post.body %></p>
</figure>
</div>
</div>
Main.js
// this doens't show posts when i use ng-init
$scope.getPosts = function(){
$http.get('/auth/posts').then(function(data){
$scope.myposts = data.data;
});
};
// this shows posts without ng-init but doesn't update when a user adds data
$http.get('/auth/posts').then(function(data){
$scope.myposts = data.data;
});
再次更新
网络错误
PostController.php
public function storePost(Request $request)
{
$data = request()->validate([
'title' => 'required|max:120',
'body' => 'required|max:1000'
]);
$data['user_id'] = auth()->user()->id;
$post = Post::create($data);
// return redirect('/home')->withMessage('A new post was created.');
return Response::json(array('success' => true));
}
【问题讨论】:
-
angular 不理解刀片语法。如果 Laravel 在 mustache 语法上抛出错误,请考虑使用
ng-bind。 -
您是否尝试在将数据分配给
$scope.myposts后添加$scope.$apply();?问题是承诺解决方案在 Angular 的摘要周期之外,所以它不知道它需要刷新 UI,除非你告诉它。 -
@SteveDanner ng-bind 不起作用,我仍然无法看到帖子。
-
@Lex 我试过了,还是看不到帖子
-
如果我删除了获取帖子功能,并将其保留为
$http.get('/auth/posts').then(function(data){ $scope.myposts = data.data; });并删除 ng-init,我可以看到帖子,但再次发布后它不会更新