HTML页面在AJAX调用之前加载
HTML Page loads before AJAX call?
在我的HTML页面中,我有一个button
标记,看起来像这样:
<button ng-hide="alreadyFreinds()" type="button" class="btn btn-primary btn-lg">Friend</button>
然而,当我尝试访问下面显示的alreadyFriends
函数的某些部分时,我得到一个错误,说TypeError: Cannot read property 'length' of undefined
$scope.alreadyFreinds = function(){
for(var i = 0; i < $scope.user.friends.length; i++){
if($scope.user.friends[i].username === $scope.realUserViewing.username &&
$scope.user.friends[i].requested == true && $scope.user.friends[i].pending == true){
return true;
}
}
};
然而,令人困惑的是,我已经在这个函数上面的几行中定义了$scope.user.friends和$scope.user,如下所示:
$http.get('/api/users/me')
.then(function(result){
$scope.user = result.data;
});
我有点困惑,为什么HTML页面在Ajax调用完成之前加载并调用tbe alreadyFriends函数。我试图用承诺来帮助我解决这个问题,我找到了
AngularJS:在服务中完成AJAX调用后,如何执行控制器函数?
但这对我没有太大帮助,因为当我做时
$http.get('/api/users/me')
.then(function(result){
var deferred = $q.defer();
$scope.user = result.data;
deferred.resolve($scope.alreadyFreinds);
return deferred.promise;
});
这确实起了作用,但在AJAX调用完成之前,HTML页面仍然会加载。有什么办法解决这个问题吗?谢谢
<button ng-hide="alreadyFreinds()"
ng-if="user.length > 0"
type="button" class="btn btn-primary btn-lg">Friend</button>
通过设置ng-if
,您的按钮将可见,并且当您的http调用响应返回时,您的alreadyFreinds()
将被触发。
相关文章:
- 在调用speak之前预加载Web Speech API
- BrowserId登录请求在文档加载时被调用
- 页面加载后的Ajax调用
- 当库在页脚中加载时,基于PHP条件调用Javascript
- 为什么我的ajax在提交用@HtmlRenderPartial加载的表单时只调用fire一次
- 使用多个依赖项加载只进行一次AJAX调用
- 如何重新加载调用部分视图的操作
- 也需要为“加载”调用脚本,而不仅仅是在“模糊”上
- 加载调用仅适用于第一个节点,不适用于叶
- 如何在不加载调用的页面的情况下调用 URL
- 页面加载调用函数上的 Angularjs
- 页面加载调用后的谷歌地图api
- Jquery加载不回答通过加载调用
- Jquery加载调用结果为空查询字符串
- ASP.Net增量页面加载调用Javascript
- 我如何从页面加载调用ajax单击事件
- 在HTML中加载/调用javascript的适当位置
- 如何停止Ajax映像加载调用新函数
- 页面加载调用javascript函数
- JSF中的页面加载调用命令按钮