我有一个如下对象:
$scope.allSessions = {
set: {},
pending: []
};
然后,方法会使用一堆对象填充set
属性,如下所示
"2014-06-07-11-30": {
blah blah
}
这会生成一个很好的日期列表(如此图片中的顶部位):
我编写了一个方法,以便当通过ng-click按下X时,日期将从列表中删除,并移入未安排的待处理" x会话"部分。该方法从set
属性中删除条目,并创建pending
数组的条目。以下是方法和模板:
$scope.makeSessionPending = function(session) {
// Create an entry in pending (only length is required)
$scope.allSessions.pending.push({
length: session.length
});
// Remove from set sessions
delete $scope.allSessions.set[session.index];
};
<ul class="sessions">
<li ng-repeat="session in allSessions.set">
[[ session.dateString ]]
<span class="status" ng-class="session.status" ng-if="statusReceived"></span>
<span class="make-pending" ng-click="makeSessionPending(session)"><i class="icon icon-times"></i></span>
<span class="remove" ng-click="removeSession(session)"><i class="icon icon-trash-o"></i></span>
</li>
<li class="pending" ng-if="allSessions.pending.length">
<i class="icon icon-ellipsis-h"></i>
[[ allSessions.pending.length ]] session[[ (allSessions.pending.length == 1) ? '' : 's' ]] not scheduled
</li>
</ul>
我的问题是,在第一次进行会话之后,[[ allSessions.pending.length ]]
不再更新。但是,如果我在makeSessionPending
方法的末尾控制日志,它看起来都是正确的,它只是模板不反映待处理数组的长度变化。
另外几个奇怪的事情是,如果我在html中检查那一行,那是正确的。当我突出显示该行时,它会更新!?
答案 0 :(得分:0)
这个问题实际上证明是一个CSS问题,只要我将position: relative
放在包含问题行的元素上,它就不会再更新了。
我最终不得不关掉position: relative
并解决它