ng-repeat和ng-href - 何时更新?

时间:2013-09-23 17:44:27

标签: angularjs

我遇到的问题是列表中对象的值正在发生变化,但更改未反映在ng-href中。

我有以下HTML:

<div class='tabrow docRow'>
    <span data-ng-repeat='f in dp.source.files'>
        <span class='linkedDoc' >
            <a class='attachedCaption' target='_blank'
               data-ng-href='{{f.vpath}}'>{{f.caption}}
                <img class='attachedSrc' data-ng-src='{{ f.vimg }}'/>
            </a>

        </span>
    </span>
</div>

我在dp.source上有一个监视,当它改变一个调用时,一个循环遍历dp.source.files中每个f的函数并添加v.img和v.path。

vimg在手表中的回调退出之前更新。 vpath以异步方式更新,可能在回调完成后一两秒更新。由于它在异步调用中更新,我使用$ apply。

$scope.$watch('dp.source', function() {
        for (var idx = 0; idx < $scope.dp.source.files.length; idx++) {
            var f = $scope.dp.source.files[idx];
            f.vimg = _ev.imgMapper(dataProvider.imgMap, f.path);  <--- immediate
            f.vpath = '#';
            attachService.getURL(f);  <-- asynch call that updates f.vpath
        }
    }

attachService:

myObj.getURL = function(obj) {
    syncService.getURL(obj, function(url) {  <-- asynch return
        $rootScope.$apply(function() {
            obj.vPath = url;
        });
    });
};

vimg立即出现在呈现的页面上,而vpath中的更改永远不会反映在页面上。

我错过了什么?

要清楚,我已经验证变量f.vpath IS正在更新。

1 个答案:

答案 0 :(得分:0)

OMG是一个拼写错误!

HTML期望f.vpath和attachService更新obj.vPath

就是这么简单