对象操作后角度模板不更新

时间:2014-06-08 13:09:43

标签: javascript angularjs

我有一个如下对象:

$scope.allSessions = {
    set: {},
    pending: []
};

然后,方法会使用一堆对象填充set属性,如下所示

"2014-06-07-11-30": {
    blah blah
}

这会生成一个很好的日期列表(如此图片中的顶部位): List

我编写了一个方法,以便当通过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中检查那一行,那是正确的。当我突出显示该行时,它会更新!?

enter image description here

1 个答案:

答案 0 :(得分:0)

这个问题实际上证明是一个CSS问题,只要我将position: relative放在包含问题行的元素上,它就不会再更新了。

我最终不得不关掉position: relative并解决它