角度显示/隐藏只处理第二个函数调用,应用/摘要问题
Angular show/hide working only on second function call, apply/digest issue?
我在一个控制器中有以下内容,该控制器旨在显示加载后的内容。理论上应该很简单,但不是打球,所以我试图理解我做错了什么。这是一个包含离子滑动框的视图,这是我试图隐藏的,直到数据加载,并带有一个离子刷新器,用于拉动刷新,因此$scope.broadcast('scroll.refreshComplete');
//initial controller vars:
$scope.data = {};
$scope.data.loading = true;
$scope.data.user = 1;
$scope.data.week = {};
$scope.data.getContent = function() {
var now = new Date().getTime();
serverRequestFactory.getWeek(now)
.success(function(response){
$scope.data.week = response;
$scope.data.loading = false;
$ionicSlideBoxDelegate.update();
$scope.$broadcast('scroll.refreshComplete');
})
.error(function(response){
$scope.data.loading = false;
$scope.$broadcast('scroll.refreshComplete');
})
}
if($scope.data.user == 1){
//calls above on view load
$scope.data.getContent();
//$scope.data.getContent();
}
奇怪的是,如果我取消对$scope.data.getContent()
的第二个调用的注释,那么上面的操作就可以了,但我不知道为什么。在设置$scope.data.week对象和更新幻灯片框委托之前和之后,我都尝试过$scope.apply()
。我的错误在哪里?
EDIT:所以我刚刚在其中一个幻灯片框项目中添加了一个ng repeat指令:
<ion-slide-box on-slide-changed="slideHasChanged($index)" ng-hide="data.loading">
<ion-slide class="customSlidePadding" ng-repeat="item in data.week.items">
现在,整个幻灯片框都遵循初始ng隐藏值,并且在没有第二个函数调用的情况下显示。。。肯定有一个角度的原因,将指令添加到隐藏幻灯片框中的嵌套项会起作用吗?
如果您在视图中使用$scope.data.week,则应该对其进行初始化,否则angular在第一次调用后不会对其创建$watch。
就这么做吧。
$scope.data.week = []; //or whatever data you want...
您应该在调用异步请求之前执行此操作。
除非您的模板实际上是通过事件处理程序调用您的函数
on-event="data.getContent()"
或者通过某种结合机制(我不推荐)
<p>{{data.getContent()}}
那么你实际上并没有调用这个方法。我在提供的代码中没有看到任何实际调用它的内容,您只定义了在if块中调用自己的方法。
尝试明确地调用它:
$scope.data.getContent = function() {
var now = new Date().getTime();
serverRequestFactory.getWeek(now)
.success(function(response){
$scope.data.week = response;
$scope.data.loading = false;
$ionicSlideBoxDelegate.update();
$scope.$broadcast('scroll.refreshComplete');
})
.error(function(response){
$scope.data.loading = false;
$scope.$broadcast('scroll.refreshComplete');
})
}
if($scope.data.user == 1){
//calls above on view load
$scope.data.getContent();
//$scope.data.getContent();
}
}
//explicitly calling
$scope.data.getContent();
相关文章:
- 从html创建一个指令,该指令按类名应用函数
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- 如何在Javascript函数调用中循环变量
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 如何远程检查JavaScript应用程序的函数调用堆栈
- 使用原型应用与调用函数
- 从Flash AS3 Android应用程序调用Java脚本函数以检索设备ID和序列号
- 从一个 Angularjs 应用程序中从另一个应用程序调用函数
- 角度显示/隐藏只处理第二个函数调用,应用/摘要问题
- 从本机iOS应用程序调用带有变量的Javascript函数
- 从ios应用程序调用javascript函数
- 从应用程序调用时未定义函数
- 从节点应用程序调用amazon lambda函数
- 来自IOS本机应用程序JavaScript函数调用
- 从其他应用程序调用Node.js函数
- 如何从JavaScript应用程序调用Windows运行时的SQLite函数
- uncaught ReferenceError,通过android应用程序调用javascript函数
- 如何从Windows应用程序调用AJAX API函数
- AngularJS函数调用导致应用程序停止