【问题标题】:ng-repeat and ng-href - when should it update?ng-repeat 和 ng-href - 什么时候应该更新?
【发布时间】:2013-09-23 17:44:26
【问题描述】:

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

【问题讨论】:

  • 创建(我的第一个)jsfiddle,表明它应该可以工作。嗯Example

标签: angularjs


【解决方案1】:

OMG 是拼写错误!

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

就这么简单

【讨论】:

    猜你喜欢
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多