Angularjs 平均堆栈:如何在控制器中获取已发布项目的_id?
我正在使用MEAN stack构建一个应用程序,用户可以在其中创建新帖子(我的第一次MEAN应用程序尝试)。每当一个用户发表一篇新文章,并且它出现在页面上时,我希望它播放一个简短的CSS动画,向用户指示它的位置。我一直在考虑在新帖子出现的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="{{
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
});