ng,如果没有捕获更新的$scope值
ng-if not catching updated $scope values
我离开angular 1.x
太久了,似乎忘记了ng-if
的一些重要内容。我有一个函数,每当转盘更改图像时,它就会更新范围值,该图像正在跟踪转盘阵列的活动索引。我将ng-if
设置为在索引到达数组末尾时删除一个元素并插入另一个元素,如下所示:
<span ng-if="activeIndex < 4"
class="back-button"
ui-sref="app.profile.index({uID: user.uID})">
Skip <i class="ion-chevron-right"></i>
</span>
<span ng-if="activeIndex === 4"
class="skip-button"
ui-sref="app.profile.index({uID: user.uID})">
Continue <i class="ion-chevron-right"></i>
</span>
但它不起作用。我相信ng-if
创建了一个新的作用域,这可能就是它没有捕获更新值的原因,但如果是这样的话,更新ng-if
的作用域的简单方法是什么?还是我完全改变了主意?
下面是一个codepen
,显示了我的问题:http://codepen.io/datatype_void/pen/zqjGOr?editors=1001
我在activeIndex更改后添加了一个$scope.$apply();
,这就解决了问题。
function(swiper){
$scope.activeIndex = swiper.activeIndex;
$scope.$apply();
尽管我不知道为什么它没有自动应用。
工作代码:http://codepen.io/C14L/pen/bpKrLo?editors=1111
(还将最大值更改为2,因为以前从未变为4,但这不是问题所在。)
JavaScript:
angular.module('ionicApp', ['ionic'])
.controller('MainCtrl', function($scope, $timeout) {
$scope.updateIndex = function(index) {
$timeout(function() {
$scope.activeIndex = index;
});
};
$scope.options = {
autoplay: 300,
speed: 500,
effect: 'cube',
onSlideChangeStart : function(swiper){
if (swiper.activeIndex !== 'undefined') {
$scope.updateIndex(swiper.activeIndex);
}
}
}
$scope.updateIndex(0);
});
HTML:
<span ng-if="activeIndex < 2"
ui-sref="app.profile.index({uID: user.uID})">
Skip <i class="ion-chevron-right"></i>
</span>
<span ng-if="activeIndex == 2"
ui-sref="app.profile.index({uID: user.uID})">
Continue <i class="ion-chevron-right"></i>
</span>
AngularJS提供$timeout,这与setTimeout类似,但默认情况下会自动将代码包装在$apply中。
有关更多信息:http://www.codingeek.com/angularjs/angular-js-apply-timeout-digest-evalasync/
相关文章:
- AngularJS:ng之后,重复$scope值未按预期更新
- ng在更新$scope后重复不更新信息
- Ionic:AngularJS变量未使用$scope更新DOM
- $Scope变量在HTML中不更新,尽管在控制器中不断更新
- 获取Div Width,然后更新Scope Variable
- Angular $scope更新、导航和 $scope.$apply() 后不绑定到视图
- Angular js - 异步调用 $scope.users 后不更新模态值
- 角度:当输入更改时更新视图 + .this/$scope
- ng,如果没有捕获更新的$scope值
- Angular Service数据未在$scope中更新
- 在从websocket服务器推送消息后更新$scope变量
- JavaScript未更新$scope变量的一部分
- 控制器内部的scope函数不根据视图中的ng模型更新值
- Angular$scope在更新时未将结果传递给父控制器
- $scope之后未更新角度范围$在$broadcast之后的事件上
- 如何在Angular中传递此回调并更新$scope
- 使用Angular Directive用$scope属性更新DOM-只要指令运行(无需等待事件)
- 分析异步调用未更新AngularJS中的$scope变量
- 我正在使用 $scope.$apply 在 http 调用后更新对象数组.谁能告诉我正确的方法
- AngularJS$scope更新,而不是视图