Angularjs 平均堆栈:如何在控制器中获取已发布项目的_id?

Angularjs 平均堆栈:如何在控制器中获取已发布项目的_id?,angularjs,mean-stack,Angularjs,Mean Stack,我正在使用MEAN stack构建一个应用程序,用户可以在其中创建新帖子(我的第一次MEAN应用程序尝试)。每当一个用户发表一篇新文章,并且它出现在页面上时,我希望它播放一个简短的CSS动画,向用户指示它的位置。我一直在考虑在新帖子出现的div中添加一个小的CSS动画类,但这就是我遇到问题的地方 每个帖子都在自己的div中,其id是帖子的\u id <div ng-repeat="post in posts | orderBy: order"> <div id="{{

我正在使用MEAN stack构建一个应用程序,用户可以在其中创建新帖子(我的第一次MEAN应用程序尝试)。每当一个用户发表一篇新文章,并且它出现在页面上时,我希望它播放一个简短的CSS动画,向用户指示它的位置。我一直在考虑在新帖子出现的
div
中添加一个小的CSS动画类,但这就是我遇到问题的地方

每个帖子都在自己的
div
中,其id是帖子的
\u id

<div ng-repeat="post in posts | orderBy: order">

    <div id="{{post._id}}">  // this is where I'd like to add the animation class 
       {{post.text}}    
    </div> 

</div>
为了能够将CSS动画类添加到新帖子中,我需要知道它的
\u id
,因为它也是它的
div
的id。我知道我能够通过使用以下命令将现在已注释的
\u id
响应从工厂返回到我的控制器来获取新帖子的
\u id

posts.create(newPost).then(function(successResponse) { // posts.create is the factory method above    
  console.log(successResponse._id);   // This works fine

  var id = '#' + successResponse._id; 
  $(id).addClass('flashNew');         // This does not work
});
但是我似乎无法从
then()内部访问
div
。我假设此时还不存在正确的
div

我也不知道如何从
then()
外部访问
successResponse.\u id


我该怎么办?这是解决这类问题的好方法吗?

看起来您是在呈现
之前添加类。我有一个例子,我添加了一个
$timeout
,效果很好。请看下面的示例代码:

var-app=angular.module('ngApp',[]);
app.controller('myCtrl',['$scope','$timeout',函数($scope,$timeout){
"严格使用",;
$scope.posts=[{
文字:“废话”,
_身份证号码:1
}, {
文字:“球”,
_身份证号码:2
}];
变量i=3
$scope.addPost=函数(){
i=i+1
var post={
文本:“id为“+i”的帖子,
_id:我
};
$scope.posts.push(post);
$timeout(函数(){
变量id='#'+post._id;
var myElement=$(id);
$(myElement).addClass('flashPost');
}, 1);
}
}]);
.flashPost{
颜色:红色;
字号:2em;
字号:600;
}

文件。写(“”);
添加帖子
{{post.text}
Div的id={{post.\u id}
你似乎有一个
id
来工作,就像在
你为什么要做所有其他的事情,似乎有点迂回?@Jax我是个傻瓜。)那么,您建议在$scope数组更新后从中获取id?因为我事先不知道帖子的id是什么,所以我不确定从数组中获取id的最佳方法是什么。例如,在数组中选择最新的帖子是否可能返回另一个用户同时发布的帖子?非常有用。谢谢
posts.create(newPost).then(function(successResponse) { // posts.create is the factory method above    
  console.log(successResponse._id);   // This works fine

  var id = '#' + successResponse._id; 
  $(id).addClass('flashNew');         // This does not work
});