0

我遇到了一个问题,列表中的对象中的值正在更改,但更改未反映在 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
        }
    }

附加服务:

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

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

我错过了什么?

需要明确的是,我已经验证了变量 f.vpath 正在更新。

4

1 回答 1

0

OMG 是拼写错误!

HTML 需要 f.vpath 和 attachService 更新 obj.vPath

就这么简单

于 2013-09-24T13:24:34.287 回答