何时$on加载需要 AngularJS 应用程序
When is $on loaded needed in an AngularJS app?
我正在遵循这个角度教程,并对$on("loaded",...(调用感到困惑。
$scope.user.$on("loaded", function() {
populatePosts();
populatecomments();
});
...
function populatecomments() {
$scope.comments = {};
angular.forEach($scope.user.comments, function(comment) {
var post = Post.find(comment.postId);
post.$on("loaded", function() {
$scope.comments[comment.id] = post.$child("comments").$child(comment.id);
$scope.commentedPosts[comment.postId] = post;
});
});
}
为什么我们不能在这里调用 populatePosts(( 和 populatComments((?如果在加载之前没有调用,为什么在 populatecomments(( 中需要第二个 $on("loaded", ...(?
第一个:
$scope.user.$on("loaded",...
将在加载 $scope.user 时触发,第二个:
post.$on("loaded",...
加载给定帖子时,将为每个帖子触发。
Angular(主要是javascript(异步进行网络调用,所以如果你想对它们的结果进行后处理,你必须定义一个回调,在加载它们时将被调用。
如您所见populatecomments()
使用$scope.user.comments
如果在加载的事件处理程序之外直接调用populatecomments()
,则可能无法访问这些。
在这种情况下,它不是。您可以(并且应该(重构此代码以改用承诺。
相关文章:
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 如何在AngularJS应用程序的主体上动态设置溢出
- 如何使用Node.js/MongoDB在AngularJS应用程序中获取特定于目标的数据
- 仅客户端AngularJS应用程序
- 如何使用onDeviceReady设置AngularJS应用程序并初始化Cordova的功能
- 如何在angularjs应用程序中解析Drupal JSON数据
- 一个页面中有多个AngularJS应用程序
- Angularjs应用程序的多个实例
- 在AngularJS应用程序中加载JSON(加载谷歌电子表格)
- 如何将路径更改广播到 AngularJS 应用程序中的所有视图
- AngularJS应用程序中的CORS错误
- AngularJS应用程序:如何将.js文件包含到index.html中
- 无法模块化AngularJS应用程序
- 如何在angularjs应用程序中注销后,通过浏览器后退按钮禁止用户访问上一页
- 如何在Eclipse中运行和调试AngularJS应用程序
- 带有RequireJS的AngularJS应用程序在Safari和Firefox中给出了“使用严格”错误
- 动态加载AngularJS应用程序
- 是否可以将我网站上的普通javascript和css函数包含到我的angularjs应用程序中
- 使用AngularJS应用程序为移动设备(iOS、Android等)构建本地应用程序的最佳方式