我遇到的问题是列表中对象的值正在发生变化,但更改未反映在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正在更新。
答案 0 :(得分:0)
OMG是一个拼写错误!
HTML期望f.vpath和attachService更新obj.vPath
就是这么简单